﻿2026-06-21T09:37:51.8731794Z ##[group]Run ./traceable-reqs check --json
2026-06-21T09:37:51.8732118Z [36;1m./traceable-reqs check --json[0m
2026-06-21T09:37:51.8745053Z shell: /usr/bin/bash -e {0}
2026-06-21T09:37:51.8745278Z ##[endgroup]
2026-06-21T09:37:51.9620707Z {
2026-06-21T09:37:51.9621274Z   "schemaVersion": 1,
2026-06-21T09:37:51.9621671Z   "summary": {
2026-06-21T09:37:51.9622048Z     "requirementCount": 276,
2026-06-21T09:37:51.9622442Z     "completeCount": 276,
2026-06-21T09:37:51.9622811Z     "incompleteCount": 0,
2026-06-21T09:37:51.9623183Z     "findingCount": 0
2026-06-21T09:37:51.9623507Z   },
2026-06-21T09:37:51.9623812Z   "requirements": [
2026-06-21T09:37:51.9624151Z     {
2026-06-21T09:37:51.9624939Z       "id": "REQ-API-1",
2026-06-21T09:37:51.9625439Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T09:37:51.9626026Z       "requiredStages": [
2026-06-21T09:37:51.9626384Z         "impl",
2026-06-21T09:37:51.9626689Z         "unit",
2026-06-21T09:37:51.9626999Z         "int"
2026-06-21T09:37:51.9627289Z       ],
2026-06-21T09:37:51.9627524Z       "stages": {
2026-06-21T09:37:51.9627783Z         "doc": {
2026-06-21T09:37:51.9628042Z           "complete": false,
2026-06-21T09:37:51.9628357Z           "evidence": []
2026-06-21T09:37:51.9628642Z         },
2026-06-21T09:37:51.9628877Z         "impl": {
2026-06-21T09:37:51.9629267Z           "complete": true,
2026-06-21T09:37:51.9629582Z           "evidence": [
2026-06-21T09:37:51.9629853Z             {
2026-06-21T09:37:51.9630135Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:51.9630509Z               "line": 15
2026-06-21T09:37:51.9630786Z             }
2026-06-21T09:37:51.9631034Z           ]
2026-06-21T09:37:51.9631282Z         },
2026-06-21T09:37:51.9631514Z         "int": {
2026-06-21T09:37:51.9631782Z           "complete": true,
2026-06-21T09:37:51.9632073Z           "evidence": [
2026-06-21T09:37:51.9632350Z             {
2026-06-21T09:37:51.9632646Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:51.9633026Z               "line": 13
2026-06-21T09:37:51.9633306Z             }
2026-06-21T09:37:51.9633552Z           ]
2026-06-21T09:37:51.9633795Z         },
2026-06-21T09:37:51.9634029Z         "unit": {
2026-06-21T09:37:51.9634297Z           "complete": true,
2026-06-21T09:37:51.9634587Z           "evidence": [
2026-06-21T09:37:51.9634860Z             {
2026-06-21T09:37:51.9635146Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:51.9635504Z               "line": 717
2026-06-21T09:37:51.9635797Z             },
2026-06-21T09:37:51.9636032Z             {
2026-06-21T09:37:51.9636328Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:51.9636691Z               "line": 804
2026-06-21T09:37:51.9636968Z             }
2026-06-21T09:37:51.9637192Z           ]
2026-06-21T09:37:51.9637431Z         }
2026-06-21T09:37:51.9637660Z       }
2026-06-21T09:37:51.9637907Z     },
2026-06-21T09:37:51.9638140Z     {
2026-06-21T09:37:51.9638390Z       "id": "REQ-API-2",
2026-06-21T09:37:51.9638864Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T09:37:51.9639479Z       "requiredStages": [
2026-06-21T09:37:51.9639761Z         "impl",
2026-06-21T09:37:51.9640028Z         "unit",
2026-06-21T09:37:51.9640371Z         "int"
2026-06-21T09:37:51.9640620Z       ],
2026-06-21T09:37:51.9640861Z       "stages": {
2026-06-21T09:37:51.9641121Z         "doc": {
2026-06-21T09:37:51.9641370Z           "complete": false,
2026-06-21T09:37:51.9641661Z           "evidence": []
2026-06-21T09:37:51.9641942Z         },
2026-06-21T09:37:51.9642171Z         "impl": {
2026-06-21T09:37:51.9642438Z           "complete": true,
2026-06-21T09:37:51.9642742Z           "evidence": [
2026-06-21T09:37:51.9643019Z             {
2026-06-21T09:37:51.9643315Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:37:51.9643671Z               "line": 17
2026-06-21T09:37:51.9643941Z             },
2026-06-21T09:37:51.9644199Z             {
2026-06-21T09:37:51.9644738Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:51.9645115Z               "line": 20
2026-06-21T09:37:51.9645382Z             },
2026-06-21T09:37:51.9645624Z             {
2026-06-21T09:37:51.9645915Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:51.9646280Z               "line": 142
2026-06-21T09:37:51.9646555Z             },
2026-06-21T09:37:51.9646808Z             {
2026-06-21T09:37:51.9647104Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9647475Z               "line": 24
2026-06-21T09:37:51.9647747Z             },
2026-06-21T09:37:51.9647996Z             {
2026-06-21T09:37:51.9648434Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9648792Z               "line": 41
2026-06-21T09:37:51.9649143Z             },
2026-06-21T09:37:51.9649382Z             {
2026-06-21T09:37:51.9649673Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9650044Z               "line": 213
2026-06-21T09:37:51.9650316Z             },
2026-06-21T09:37:51.9650555Z             {
2026-06-21T09:37:51.9650847Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9651232Z               "line": 255
2026-06-21T09:37:51.9651554Z             },
2026-06-21T09:37:51.9651820Z             {
2026-06-21T09:37:51.9652024Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9652412Z               "line": 334
2026-06-21T09:37:51.9652702Z             },
2026-06-21T09:37:51.9652950Z             {
2026-06-21T09:37:51.9653236Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9653598Z               "line": 397
2026-06-21T09:37:51.9653880Z             },
2026-06-21T09:37:51.9654137Z             {
2026-06-21T09:37:51.9654445Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9654816Z               "line": 436
2026-06-21T09:37:51.9655088Z             },
2026-06-21T09:37:51.9655341Z             {
2026-06-21T09:37:51.9655636Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:51.9655994Z               "line": 17
2026-06-21T09:37:51.9656271Z             },
2026-06-21T09:37:51.9656518Z             {
2026-06-21T09:37:51.9656803Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:51.9657148Z               "line": 30
2026-06-21T09:37:51.9657430Z             },
2026-06-21T09:37:51.9657665Z             {
2026-06-21T09:37:51.9657945Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:51.9658302Z               "line": 63
2026-06-21T09:37:51.9658575Z             },
2026-06-21T09:37:51.9658823Z             {
2026-06-21T09:37:51.9659223Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:51.9659458Z               "line": 77
2026-06-21T09:37:51.9659637Z             }
2026-06-21T09:37:51.9659804Z           ]
2026-06-21T09:37:51.9659970Z         },
2026-06-21T09:37:51.9660133Z         "int": {
2026-06-21T09:37:51.9660318Z           "complete": true,
2026-06-21T09:37:51.9660524Z           "evidence": [
2026-06-21T09:37:51.9660710Z             {
2026-06-21T09:37:51.9660910Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:51.9661158Z               "line": 14
2026-06-21T09:37:51.9661340Z             },
2026-06-21T09:37:51.9661515Z             {
2026-06-21T09:37:51.9661703Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:51.9661948Z               "line": 187
2026-06-21T09:37:51.9662128Z             }
2026-06-21T09:37:51.9662294Z           ]
2026-06-21T09:37:51.9662448Z         },
2026-06-21T09:37:51.9662618Z         "unit": {
2026-06-21T09:37:51.9662790Z           "complete": true,
2026-06-21T09:37:51.9663001Z           "evidence": [
2026-06-21T09:37:51.9663195Z             {
2026-06-21T09:37:51.9663391Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:37:51.9663630Z               "line": 82
2026-06-21T09:37:51.9663810Z             },
2026-06-21T09:37:51.9663983Z             {
2026-06-21T09:37:51.9664373Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:51.9664612Z               "line": 279
2026-06-21T09:37:51.9664805Z             },
2026-06-21T09:37:51.9664977Z             {
2026-06-21T09:37:51.9665175Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9665414Z               "line": 709
2026-06-21T09:37:51.9665601Z             },
2026-06-21T09:37:51.9665756Z             {
2026-06-21T09:37:51.9665958Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9666211Z               "line": 720
2026-06-21T09:37:51.9666391Z             },
2026-06-21T09:37:51.9666564Z             {
2026-06-21T09:37:51.9666874Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9667122Z               "line": 873
2026-06-21T09:37:51.9667306Z             },
2026-06-21T09:37:51.9667468Z             {
2026-06-21T09:37:51.9669897Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9670145Z               "line": 919
2026-06-21T09:37:51.9670345Z             },
2026-06-21T09:37:51.9670511Z             {
2026-06-21T09:37:51.9670708Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:51.9670941Z               "line": 143
2026-06-21T09:37:51.9671122Z             },
2026-06-21T09:37:51.9671285Z             {
2026-06-21T09:37:51.9671465Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:51.9671699Z               "line": 187
2026-06-21T09:37:51.9671885Z             }
2026-06-21T09:37:51.9672080Z           ]
2026-06-21T09:37:51.9672361Z         }
2026-06-21T09:37:51.9672609Z       }
2026-06-21T09:37:51.9672849Z     },
2026-06-21T09:37:51.9673102Z     {
2026-06-21T09:37:51.9673584Z       "id": "REQ-API-3",
2026-06-21T09:37:51.9674070Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T09:37:51.9674604Z       "requiredStages": [
2026-06-21T09:37:51.9675140Z         "impl",
2026-06-21T09:37:51.9675495Z         "unit",
2026-06-21T09:37:51.9675875Z         "int"
2026-06-21T09:37:51.9676365Z       ],
2026-06-21T09:37:51.9676723Z       "stages": {
2026-06-21T09:37:51.9677138Z         "doc": {
2026-06-21T09:37:51.9677528Z           "complete": false,
2026-06-21T09:37:51.9677937Z           "evidence": []
2026-06-21T09:37:51.9706433Z         },
2026-06-21T09:37:51.9706690Z         "impl": {
2026-06-21T09:37:51.9706961Z           "complete": true,
2026-06-21T09:37:51.9707260Z           "evidence": [
2026-06-21T09:37:51.9707526Z             {
2026-06-21T09:37:51.9707818Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:51.9708179Z               "line": 27
2026-06-21T09:37:51.9708442Z             },
2026-06-21T09:37:51.9708709Z             {
2026-06-21T09:37:51.9709105Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9709485Z               "line": 566
2026-06-21T09:37:51.9709761Z             }
2026-06-21T09:37:51.9710006Z           ]
2026-06-21T09:37:51.9710231Z         },
2026-06-21T09:37:51.9710465Z         "int": {
2026-06-21T09:37:51.9710751Z           "complete": true,
2026-06-21T09:37:51.9711037Z           "evidence": [
2026-06-21T09:37:51.9711319Z             {
2026-06-21T09:37:51.9711600Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:51.9711982Z               "line": 261
2026-06-21T09:37:51.9712254Z             }
2026-06-21T09:37:51.9712484Z           ]
2026-06-21T09:37:51.9712710Z         },
2026-06-21T09:37:51.9712958Z         "unit": {
2026-06-21T09:37:51.9713225Z           "complete": true,
2026-06-21T09:37:51.9713520Z           "evidence": [
2026-06-21T09:37:51.9713796Z             {
2026-06-21T09:37:51.9714087Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:51.9714464Z               "line": 280
2026-06-21T09:37:51.9714744Z             },
2026-06-21T09:37:51.9714981Z             {
2026-06-21T09:37:51.9715281Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:51.9715676Z               "line": 948
2026-06-21T09:37:51.9715963Z             }
2026-06-21T09:37:51.9716454Z           ]
2026-06-21T09:37:51.9716697Z         }
2026-06-21T09:37:51.9716945Z       }
2026-06-21T09:37:51.9717183Z     },
2026-06-21T09:37:51.9717418Z     {
2026-06-21T09:37:51.9717659Z       "id": "REQ-API-4",
2026-06-21T09:37:51.9720504Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T09:37:51.9722876Z       "requiredStages": [
2026-06-21T09:37:51.9723155Z         "doc",
2026-06-21T09:37:51.9723403Z         "impl",
2026-06-21T09:37:51.9723660Z         "unit"
2026-06-21T09:37:51.9723904Z       ],
2026-06-21T09:37:51.9724147Z       "stages": {
2026-06-21T09:37:51.9724390Z         "doc": {
2026-06-21T09:37:51.9724661Z           "complete": true,
2026-06-21T09:37:51.9724991Z           "evidence": [
2026-06-21T09:37:51.9725224Z             {
2026-06-21T09:37:51.9725395Z               "path": "CONTEXT.md",
2026-06-21T09:37:51.9725616Z               "line": 149
2026-06-21T09:37:51.9725804Z             }
2026-06-21T09:37:51.9725970Z           ]
2026-06-21T09:37:51.9726132Z         },
2026-06-21T09:37:51.9726289Z         "impl": {
2026-06-21T09:37:51.9726471Z           "complete": true,
2026-06-21T09:37:51.9726667Z           "evidence": [
2026-06-21T09:37:51.9726842Z             {
2026-06-21T09:37:51.9727038Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:51.9727287Z               "line": 484
2026-06-21T09:37:51.9727467Z             }
2026-06-21T09:37:51.9727616Z           ]
2026-06-21T09:37:51.9727776Z         },
2026-06-21T09:37:51.9727926Z         "int": {
2026-06-21T09:37:51.9728100Z           "complete": false,
2026-06-21T09:37:51.9728310Z           "evidence": []
2026-06-21T09:37:51.9728493Z         },
2026-06-21T09:37:51.9728652Z         "unit": {
2026-06-21T09:37:51.9728827Z           "complete": true,
2026-06-21T09:37:51.9729094Z           "evidence": [
2026-06-21T09:37:51.9729281Z             {
2026-06-21T09:37:51.9729456Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:51.9729761Z               "line": 657
2026-06-21T09:37:51.9730043Z             },
2026-06-21T09:37:51.9730282Z             {
2026-06-21T09:37:51.9730554Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:51.9730928Z               "line": 681
2026-06-21T09:37:51.9731208Z             },
2026-06-21T09:37:51.9731456Z             {
2026-06-21T09:37:51.9731737Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:51.9731970Z               "line": 705
2026-06-21T09:37:51.9732148Z             }
2026-06-21T09:37:51.9732299Z           ]
2026-06-21T09:37:51.9732459Z         }
2026-06-21T09:37:51.9732619Z       }
2026-06-21T09:37:51.9732843Z     },
2026-06-21T09:37:51.9733083Z     {
2026-06-21T09:37:51.9733331Z       "id": "REQ-ARCH-1",
2026-06-21T09:37:51.9733682Z       "title": "Many small acyclically-layered crates",
2026-06-21T09:37:51.9734069Z       "requiredStages": [
2026-06-21T09:37:51.9734346Z         "impl"
2026-06-21T09:37:51.9734578Z       ],
2026-06-21T09:37:51.9734798Z       "stages": {
2026-06-21T09:37:51.9735046Z         "doc": {
2026-06-21T09:37:51.9735323Z           "complete": false,
2026-06-21T09:37:51.9735634Z           "evidence": []
2026-06-21T09:37:51.9735817Z         },
2026-06-21T09:37:51.9736091Z         "impl": {
2026-06-21T09:37:51.9736273Z           "complete": true,
2026-06-21T09:37:51.9736463Z           "evidence": [
2026-06-21T09:37:51.9736645Z             {
2026-06-21T09:37:51.9736829Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T09:37:51.9737063Z               "line": 18
2026-06-21T09:37:51.9737241Z             },
2026-06-21T09:37:51.9737551Z             {
2026-06-21T09:37:51.9737746Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T09:37:51.9737984Z               "line": 12
2026-06-21T09:37:51.9738162Z             },
2026-06-21T09:37:51.9738327Z             {
2026-06-21T09:37:51.9738515Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T09:37:51.9738750Z               "line": 12
2026-06-21T09:37:51.9738930Z             }
2026-06-21T09:37:51.9739178Z           ]
2026-06-21T09:37:51.9739335Z         },
2026-06-21T09:37:51.9739493Z         "int": {
2026-06-21T09:37:51.9739668Z           "complete": false,
2026-06-21T09:37:51.9739874Z           "evidence": []
2026-06-21T09:37:51.9740179Z         },
2026-06-21T09:37:51.9740346Z         "unit": {
2026-06-21T09:37:51.9740518Z           "complete": false,
2026-06-21T09:37:51.9740714Z           "evidence": []
2026-06-21T09:37:51.9740893Z         }
2026-06-21T09:37:51.9741048Z       }
2026-06-21T09:37:51.9741204Z     },
2026-06-21T09:37:51.9741351Z     {
2026-06-21T09:37:51.9741511Z       "id": "REQ-ARCH-2",
2026-06-21T09:37:51.9741778Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T09:37:51.9742070Z       "requiredStages": [
2026-06-21T09:37:51.9742254Z         "impl"
2026-06-21T09:37:51.9742408Z       ],
2026-06-21T09:37:51.9742559Z       "stages": {
2026-06-21T09:37:51.9742727Z         "doc": {
2026-06-21T09:37:51.9742898Z           "complete": false,
2026-06-21T09:37:51.9743084Z           "evidence": []
2026-06-21T09:37:51.9743300Z         },
2026-06-21T09:37:51.9743466Z         "impl": {
2026-06-21T09:37:51.9743634Z           "complete": true,
2026-06-21T09:37:51.9743828Z           "evidence": [
2026-06-21T09:37:51.9744015Z             {
2026-06-21T09:37:51.9744208Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T09:37:51.9744446Z               "line": 18
2026-06-21T09:37:51.9744629Z             }
2026-06-21T09:37:51.9744775Z           ]
2026-06-21T09:37:51.9744934Z         },
2026-06-21T09:37:51.9745095Z         "int": {
2026-06-21T09:37:51.9745282Z           "complete": false,
2026-06-21T09:37:51.9745463Z           "evidence": []
2026-06-21T09:37:51.9745643Z         },
2026-06-21T09:37:51.9745806Z         "unit": {
2026-06-21T09:37:51.9745977Z           "complete": false,
2026-06-21T09:37:51.9746169Z           "evidence": []
2026-06-21T09:37:51.9746353Z         }
2026-06-21T09:37:51.9746511Z       }
2026-06-21T09:37:51.9746666Z     },
2026-06-21T09:37:51.9746818Z     {
2026-06-21T09:37:51.9746971Z       "id": "REQ-ARCH-3",
2026-06-21T09:37:51.9747267Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T09:37:51.9747600Z       "requiredStages": [
2026-06-21T09:37:51.9747802Z         "impl",
2026-06-21T09:37:51.9747972Z         "unit"
2026-06-21T09:37:51.9748121Z       ],
2026-06-21T09:37:51.9748272Z       "stages": {
2026-06-21T09:37:51.9748436Z         "doc": {
2026-06-21T09:37:51.9748611Z           "complete": false,
2026-06-21T09:37:51.9748802Z           "evidence": []
2026-06-21T09:37:51.9749051Z         },
2026-06-21T09:37:51.9749207Z         "impl": {
2026-06-21T09:37:51.9749373Z           "complete": true,
2026-06-21T09:37:51.9749566Z           "evidence": [
2026-06-21T09:37:51.9749738Z             {
2026-06-21T09:37:51.9749952Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:37:51.9750200Z               "line": 34
2026-06-21T09:37:51.9750377Z             },
2026-06-21T09:37:51.9750534Z             {
2026-06-21T09:37:51.9750730Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:37:51.9750964Z               "line": 41
2026-06-21T09:37:51.9751154Z             }
2026-06-21T09:37:51.9751303Z           ]
2026-06-21T09:37:51.9751468Z         },
2026-06-21T09:37:51.9751632Z         "int": {
2026-06-21T09:37:51.9751806Z           "complete": false,
2026-06-21T09:37:51.9752006Z           "evidence": []
2026-06-21T09:37:51.9752185Z         },
2026-06-21T09:37:51.9752348Z         "unit": {
2026-06-21T09:37:51.9752524Z           "complete": true,
2026-06-21T09:37:51.9752819Z           "evidence": [
2026-06-21T09:37:51.9752996Z             {
2026-06-21T09:37:51.9753202Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:37:51.9753439Z               "line": 51
2026-06-21T09:37:51.9753616Z             },
2026-06-21T09:37:51.9753778Z             {
2026-06-21T09:37:51.9753974Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:37:51.9754208Z               "line": 71
2026-06-21T09:37:51.9754384Z             },
2026-06-21T09:37:51.9754547Z             {
2026-06-21T09:37:51.9754745Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T09:37:51.9754993Z               "line": 83
2026-06-21T09:37:51.9755275Z             }
2026-06-21T09:37:51.9755432Z           ]
2026-06-21T09:37:51.9755599Z         }
2026-06-21T09:37:51.9755751Z       }
2026-06-21T09:37:51.9755908Z     },
2026-06-21T09:37:51.9756066Z     {
2026-06-21T09:37:51.9756227Z       "id": "REQ-ARCH-4",
2026-06-21T09:37:51.9756496Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T09:37:51.9756825Z       "requiredStages": [
2026-06-21T09:37:51.9757003Z         "impl",
2026-06-21T09:37:51.9757165Z         "unit"
2026-06-21T09:37:51.9757325Z       ],
2026-06-21T09:37:51.9757485Z       "stages": {
2026-06-21T09:37:51.9757655Z         "doc": {
2026-06-21T09:37:51.9757832Z           "complete": false,
2026-06-21T09:37:51.9758023Z           "evidence": []
2026-06-21T09:37:51.9758203Z         },
2026-06-21T09:37:51.9758366Z         "impl": {
2026-06-21T09:37:51.9758541Z           "complete": true,
2026-06-21T09:37:51.9758724Z           "evidence": [
2026-06-21T09:37:51.9758909Z             {
2026-06-21T09:37:51.9759162Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9759414Z               "line": 165
2026-06-21T09:37:51.9759601Z             },
2026-06-21T09:37:51.9759762Z             {
2026-06-21T09:37:51.9759957Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9760207Z               "line": 188
2026-06-21T09:37:51.9760398Z             },
2026-06-21T09:37:51.9760565Z             {
2026-06-21T09:37:51.9760760Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9761009Z               "line": 208
2026-06-21T09:37:51.9761190Z             },
2026-06-21T09:37:51.9761357Z             {
2026-06-21T09:37:51.9761553Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9761790Z               "line": 223
2026-06-21T09:37:51.9761971Z             },
2026-06-21T09:37:51.9762140Z             {
2026-06-21T09:37:51.9762324Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9762575Z               "line": 273
2026-06-21T09:37:51.9762754Z             }
2026-06-21T09:37:51.9762923Z           ]
2026-06-21T09:37:51.9763094Z         },
2026-06-21T09:37:51.9763251Z         "int": {
2026-06-21T09:37:51.9763423Z           "complete": false,
2026-06-21T09:37:51.9763623Z           "evidence": []
2026-06-21T09:37:51.9763809Z         },
2026-06-21T09:37:51.9763975Z         "unit": {
2026-06-21T09:37:51.9764153Z           "complete": true,
2026-06-21T09:37:51.9764343Z           "evidence": [
2026-06-21T09:37:51.9764524Z             {
2026-06-21T09:37:51.9764726Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9764953Z               "line": 334
2026-06-21T09:37:51.9765163Z             },
2026-06-21T09:37:51.9765329Z             {
2026-06-21T09:37:51.9765520Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9765754Z               "line": 344
2026-06-21T09:37:51.9765943Z             },
2026-06-21T09:37:51.9766107Z             {
2026-06-21T09:37:51.9766306Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9766526Z               "line": 355
2026-06-21T09:37:51.9766703Z             },
2026-06-21T09:37:51.9766869Z             {
2026-06-21T09:37:51.9767056Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9767295Z               "line": 366
2026-06-21T09:37:51.9767588Z             },
2026-06-21T09:37:51.9767744Z             {
2026-06-21T09:37:51.9767943Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9768186Z               "line": 378
2026-06-21T09:37:51.9768373Z             },
2026-06-21T09:37:51.9768539Z             {
2026-06-21T09:37:51.9768735Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9769055Z               "line": 391
2026-06-21T09:37:51.9769236Z             },
2026-06-21T09:37:51.9769402Z             {
2026-06-21T09:37:51.9769604Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9769856Z               "line": 402
2026-06-21T09:37:51.9787016Z             },
2026-06-21T09:37:51.9787260Z             {
2026-06-21T09:37:51.9787480Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9787746Z               "line": 419
2026-06-21T09:37:51.9787942Z             },
2026-06-21T09:37:51.9788115Z             {
2026-06-21T09:37:51.9788318Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:51.9788580Z               "line": 547
2026-06-21T09:37:51.9788765Z             }
2026-06-21T09:37:51.9788925Z           ]
2026-06-21T09:37:51.9789160Z         }
2026-06-21T09:37:51.9789316Z       }
2026-06-21T09:37:51.9789469Z     },
2026-06-21T09:37:51.9789626Z     {
2026-06-21T09:37:51.9789794Z       "id": "REQ-CLI-1",
2026-06-21T09:37:51.9790972Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T09:37:51.9792149Z       "requiredStages": [
2026-06-21T09:37:51.9792341Z         "impl",
2026-06-21T09:37:51.9792507Z         "unit"
2026-06-21T09:37:51.9792670Z       ],
2026-06-21T09:37:51.9792837Z       "stages": {
2026-06-21T09:37:51.9793008Z         "doc": {
2026-06-21T09:37:51.9793185Z           "complete": false,
2026-06-21T09:37:51.9793380Z           "evidence": []
2026-06-21T09:37:51.9793582Z         },
2026-06-21T09:37:51.9793742Z         "impl": {
2026-06-21T09:37:51.9793920Z           "complete": true,
2026-06-21T09:37:51.9794117Z           "evidence": [
2026-06-21T09:37:51.9794298Z             {
2026-06-21T09:37:51.9794488Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9794726Z               "line": 225
2026-06-21T09:37:51.9794908Z             },
2026-06-21T09:37:51.9795074Z             {
2026-06-21T09:37:51.9795256Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9795490Z               "line": 1093
2026-06-21T09:37:51.9795685Z             },
2026-06-21T09:37:51.9795838Z             {
2026-06-21T09:37:51.9796019Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9796252Z               "line": 1720
2026-06-21T09:37:51.9796440Z             },
2026-06-21T09:37:51.9796600Z             {
2026-06-21T09:37:51.9796783Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9797004Z               "line": 3124
2026-06-21T09:37:51.9797191Z             }
2026-06-21T09:37:51.9797357Z           ]
2026-06-21T09:37:51.9797501Z         },
2026-06-21T09:37:51.9797663Z         "int": {
2026-06-21T09:37:51.9797835Z           "complete": false,
2026-06-21T09:37:51.9798031Z           "evidence": []
2026-06-21T09:37:51.9798210Z         },
2026-06-21T09:37:51.9798369Z         "unit": {
2026-06-21T09:37:51.9798540Z           "complete": true,
2026-06-21T09:37:51.9798726Z           "evidence": [
2026-06-21T09:37:51.9798907Z             {
2026-06-21T09:37:51.9799359Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9799585Z               "line": 7947
2026-06-21T09:37:51.9799762Z             }
2026-06-21T09:37:51.9799914Z           ]
2026-06-21T09:37:51.9800072Z         }
2026-06-21T09:37:51.9800224Z       }
2026-06-21T09:37:51.9800525Z     },
2026-06-21T09:37:51.9800688Z     {
2026-06-21T09:37:51.9800849Z       "id": "REQ-CLI-2",
2026-06-21T09:37:51.9801636Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T09:37:51.9802433Z       "requiredStages": [
2026-06-21T09:37:51.9802630Z         "impl",
2026-06-21T09:37:51.9802791Z         "unit"
2026-06-21T09:37:51.9802954Z       ],
2026-06-21T09:37:51.9803116Z       "stages": {
2026-06-21T09:37:51.9803420Z         "doc": {
2026-06-21T09:37:51.9803587Z           "complete": false,
2026-06-21T09:37:51.9803779Z           "evidence": []
2026-06-21T09:37:51.9803964Z         },
2026-06-21T09:37:51.9804137Z         "impl": {
2026-06-21T09:37:51.9804312Z           "complete": true,
2026-06-21T09:37:51.9804513Z           "evidence": [
2026-06-21T09:37:51.9804692Z             {
2026-06-21T09:37:51.9804905Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:51.9805159Z               "line": 414
2026-06-21T09:37:51.9805343Z             },
2026-06-21T09:37:51.9805507Z             {
2026-06-21T09:37:51.9805702Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:37:51.9805954Z               "line": 97
2026-06-21T09:37:51.9806130Z             },
2026-06-21T09:37:51.9806297Z             {
2026-06-21T09:37:51.9806489Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:51.9806737Z               "line": 256
2026-06-21T09:37:51.9806917Z             },
2026-06-21T09:37:51.9807093Z             {
2026-06-21T09:37:51.9807276Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9807498Z               "line": 434
2026-06-21T09:37:51.9807684Z             },
2026-06-21T09:37:51.9807855Z             {
2026-06-21T09:37:51.9808023Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9808262Z               "line": 1174
2026-06-21T09:37:51.9808456Z             },
2026-06-21T09:37:51.9808615Z             {
2026-06-21T09:37:51.9808790Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9809076Z               "line": 1958
2026-06-21T09:37:51.9809263Z             },
2026-06-21T09:37:51.9809414Z             {
2026-06-21T09:37:51.9809592Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9809829Z               "line": 2047
2026-06-21T09:37:51.9810003Z             },
2026-06-21T09:37:51.9810169Z             {
2026-06-21T09:37:51.9810346Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9810576Z               "line": 2108
2026-06-21T09:37:51.9810765Z             }
2026-06-21T09:37:51.9810933Z           ]
2026-06-21T09:37:51.9811090Z         },
2026-06-21T09:37:51.9811252Z         "int": {
2026-06-21T09:37:51.9811433Z           "complete": false,
2026-06-21T09:37:51.9811628Z           "evidence": []
2026-06-21T09:37:51.9811806Z         },
2026-06-21T09:37:51.9811972Z         "unit": {
2026-06-21T09:37:51.9812149Z           "complete": true,
2026-06-21T09:37:51.9812354Z           "evidence": [
2026-06-21T09:37:51.9812539Z             {
2026-06-21T09:37:51.9812734Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:51.9812993Z               "line": 338
2026-06-21T09:37:51.9813176Z             },
2026-06-21T09:37:51.9813337Z             {
2026-06-21T09:37:51.9813519Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9813743Z               "line": 8102
2026-06-21T09:37:51.9813923Z             }
2026-06-21T09:37:51.9814077Z           ]
2026-06-21T09:37:51.9814233Z         }
2026-06-21T09:37:51.9814391Z       }
2026-06-21T09:37:51.9814558Z     },
2026-06-21T09:37:51.9814716Z     {
2026-06-21T09:37:51.9814877Z       "id": "REQ-CLI-3",
2026-06-21T09:37:51.9815685Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T09:37:51.9816615Z       "requiredStages": [
2026-06-21T09:37:51.9816809Z         "impl",
2026-06-21T09:37:51.9816968Z         "unit"
2026-06-21T09:37:51.9817139Z       ],
2026-06-21T09:37:51.9817301Z       "stages": {
2026-06-21T09:37:51.9817458Z         "doc": {
2026-06-21T09:37:51.9817635Z           "complete": false,
2026-06-21T09:37:51.9817822Z           "evidence": []
2026-06-21T09:37:51.9818011Z         },
2026-06-21T09:37:51.9818168Z         "impl": {
2026-06-21T09:37:51.9818335Z           "complete": true,
2026-06-21T09:37:51.9818636Z           "evidence": [
2026-06-21T09:37:51.9818817Z             {
2026-06-21T09:37:51.9819059Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9819284Z               "line": 1087
2026-06-21T09:37:51.9819466Z             }
2026-06-21T09:37:51.9819618Z           ]
2026-06-21T09:37:51.9819776Z         },
2026-06-21T09:37:51.9819941Z         "int": {
2026-06-21T09:37:51.9820115Z           "complete": false,
2026-06-21T09:37:51.9820308Z           "evidence": []
2026-06-21T09:37:51.9820498Z         },
2026-06-21T09:37:51.9820658Z         "unit": {
2026-06-21T09:37:51.9820831Z           "complete": true,
2026-06-21T09:37:51.9821021Z           "evidence": [
2026-06-21T09:37:51.9821197Z             {
2026-06-21T09:37:51.9821384Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9821602Z               "line": 7912
2026-06-21T09:37:51.9821788Z             }
2026-06-21T09:37:51.9821955Z           ]
2026-06-21T09:37:51.9822107Z         }
2026-06-21T09:37:51.9822274Z       }
2026-06-21T09:37:51.9822436Z     },
2026-06-21T09:37:51.9822594Z     {
2026-06-21T09:37:51.9822751Z       "id": "REQ-CLI-4",
2026-06-21T09:37:51.9825060Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T09:37:51.9826951Z       "requiredStages": [],
2026-06-21T09:37:51.9827147Z       "stages": {
2026-06-21T09:37:51.9827327Z         "doc": {
2026-06-21T09:37:51.9827518Z           "complete": false,
2026-06-21T09:37:51.9827728Z           "evidence": []
2026-06-21T09:37:51.9827909Z         },
2026-06-21T09:37:51.9828072Z         "impl": {
2026-06-21T09:37:51.9828247Z           "complete": true,
2026-06-21T09:37:51.9828444Z           "evidence": [
2026-06-21T09:37:51.9828623Z             {
2026-06-21T09:37:51.9828814Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9829101Z               "line": 5678
2026-06-21T09:37:51.9829285Z             }
2026-06-21T09:37:51.9829453Z           ]
2026-06-21T09:37:51.9829824Z         },
2026-06-21T09:37:51.9830069Z         "int": {
2026-06-21T09:37:51.9830364Z           "complete": false,
2026-06-21T09:37:51.9830717Z           "evidence": []
2026-06-21T09:37:51.9830973Z         },
2026-06-21T09:37:51.9831285Z         "unit": {
2026-06-21T09:37:51.9831552Z           "complete": false,
2026-06-21T09:37:51.9831871Z           "evidence": []
2026-06-21T09:37:51.9832148Z         }
2026-06-21T09:37:51.9832392Z       }
2026-06-21T09:37:51.9832687Z     },
2026-06-21T09:37:51.9832964Z     {
2026-06-21T09:37:51.9833265Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T09:37:51.9836548Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T09:37:51.9839894Z       "requiredStages": [
2026-06-21T09:37:51.9840194Z         "impl",
2026-06-21T09:37:51.9840461Z         "unit"
2026-06-21T09:37:51.9840896Z       ],
2026-06-21T09:37:51.9841138Z       "stages": {
2026-06-21T09:37:51.9841438Z         "doc": {
2026-06-21T09:37:51.9841716Z           "complete": false,
2026-06-21T09:37:51.9841985Z           "evidence": []
2026-06-21T09:37:51.9842318Z         },
2026-06-21T09:37:51.9842571Z         "impl": {
2026-06-21T09:37:51.9842871Z           "complete": true,
2026-06-21T09:37:51.9843219Z           "evidence": [
2026-06-21T09:37:51.9843463Z             {
2026-06-21T09:37:51.9843825Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9844150Z               "line": 8
2026-06-21T09:37:51.9844443Z             },
2026-06-21T09:37:51.9844736Z             {
2026-06-21T09:37:51.9845046Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9845442Z               "line": 51
2026-06-21T09:37:51.9845715Z             },
2026-06-21T09:37:51.9845996Z             {
2026-06-21T09:37:51.9846291Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9846616Z               "line": 82
2026-06-21T09:37:51.9846933Z             },
2026-06-21T09:37:51.9847184Z             {
2026-06-21T09:37:51.9847441Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9847832Z               "line": 229
2026-06-21T09:37:51.9848123Z             }
2026-06-21T09:37:51.9848409Z           ]
2026-06-21T09:37:51.9848657Z         },
2026-06-21T09:37:51.9848906Z         "int": {
2026-06-21T09:37:51.9849301Z           "complete": false,
2026-06-21T09:37:51.9849611Z           "evidence": []
2026-06-21T09:37:51.9849891Z         },
2026-06-21T09:37:51.9850178Z         "unit": {
2026-06-21T09:37:51.9850439Z           "complete": true,
2026-06-21T09:37:51.9850778Z           "evidence": [
2026-06-21T09:37:51.9851049Z             {
2026-06-21T09:37:51.9851350Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9851688Z               "line": 249
2026-06-21T09:37:51.9851969Z             },
2026-06-21T09:37:51.9852253Z             {
2026-06-21T09:37:51.9852587Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9852925Z               "line": 256
2026-06-21T09:37:51.9853230Z             },
2026-06-21T09:37:51.9853479Z             {
2026-06-21T09:37:51.9853779Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9854117Z               "line": 263
2026-06-21T09:37:51.9854385Z             },
2026-06-21T09:37:51.9855702Z             {
2026-06-21T09:37:51.9855979Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9856355Z               "line": 270
2026-06-21T09:37:51.9856623Z             },
2026-06-21T09:37:51.9856856Z             {
2026-06-21T09:37:51.9857186Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9857508Z               "line": 297
2026-06-21T09:37:51.9857800Z             },
2026-06-21T09:37:51.9858120Z             {
2026-06-21T09:37:51.9858382Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9858764Z               "line": 307
2026-06-21T09:37:51.9859236Z             },
2026-06-21T09:37:51.9859542Z             {
2026-06-21T09:37:51.9859829Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9860162Z               "line": 317
2026-06-21T09:37:51.9860510Z             },
2026-06-21T09:37:51.9860776Z             {
2026-06-21T09:37:51.9861077Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9861411Z               "line": 331
2026-06-21T09:37:51.9861692Z             },
2026-06-21T09:37:51.9861987Z             {
2026-06-21T09:37:51.9862268Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9862572Z               "line": 340
2026-06-21T09:37:51.9863062Z             },
2026-06-21T09:37:51.9863314Z             {
2026-06-21T09:37:51.9863638Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9863972Z               "line": 348
2026-06-21T09:37:51.9864224Z             }
2026-06-21T09:37:51.9864535Z           ]
2026-06-21T09:37:51.9864787Z         }
2026-06-21T09:37:51.9865068Z       }
2026-06-21T09:37:51.9865378Z     },
2026-06-21T09:37:51.9865606Z     {
2026-06-21T09:37:51.9865938Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T09:37:51.9874431Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T09:37:51.9878638Z       "requiredStages": [
2026-06-21T09:37:51.9878916Z         "impl",
2026-06-21T09:37:51.9879560Z         "unit"
2026-06-21T09:37:51.9879813Z       ],
2026-06-21T09:37:51.9880090Z       "stages": {
2026-06-21T09:37:51.9880371Z         "doc": {
2026-06-21T09:37:51.9880634Z           "complete": false,
2026-06-21T09:37:51.9880977Z           "evidence": []
2026-06-21T09:37:51.9881278Z         },
2026-06-21T09:37:51.9881567Z         "impl": {
2026-06-21T09:37:51.9881848Z           "complete": true,
2026-06-21T09:37:51.9882144Z           "evidence": [
2026-06-21T09:37:51.9882449Z             {
2026-06-21T09:37:51.9882730Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:51.9883073Z               "line": 141
2026-06-21T09:37:51.9883393Z             },
2026-06-21T09:37:51.9883687Z             {
2026-06-21T09:37:51.9883995Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9884338Z               "line": 1376
2026-06-21T09:37:51.9884586Z             },
2026-06-21T09:37:51.9884910Z             {
2026-06-21T09:37:51.9885197Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9885535Z               "line": 2145
2026-06-21T09:37:51.9885869Z             },
2026-06-21T09:37:51.9886089Z             {
2026-06-21T09:37:51.9886404Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9886881Z               "line": 4368
2026-06-21T09:37:51.9887182Z             },
2026-06-21T09:37:51.9887463Z             {
2026-06-21T09:37:51.9887731Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9888093Z               "line": 4466
2026-06-21T09:37:51.9888398Z             },
2026-06-21T09:37:51.9888665Z             {
2026-06-21T09:37:51.9889022Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9889325Z               "line": 5257
2026-06-21T09:37:51.9889654Z             },
2026-06-21T09:37:51.9889907Z             {
2026-06-21T09:37:51.9890164Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9890674Z               "line": 39
2026-06-21T09:37:51.9890998Z             }
2026-06-21T09:37:51.9891283Z           ]
2026-06-21T09:37:51.9891533Z         },
2026-06-21T09:37:51.9891777Z         "int": {
2026-06-21T09:37:51.9892098Z           "complete": false,
2026-06-21T09:37:51.9892399Z           "evidence": []
2026-06-21T09:37:51.9898710Z         },
2026-06-21T09:37:51.9899015Z         "unit": {
2026-06-21T09:37:51.9899207Z           "complete": true,
2026-06-21T09:37:51.9899421Z           "evidence": [
2026-06-21T09:37:51.9899601Z             {
2026-06-21T09:37:51.9899792Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9900036Z               "line": 10272
2026-06-21T09:37:51.9900224Z             },
2026-06-21T09:37:51.9900385Z             {
2026-06-21T09:37:51.9900571Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9900810Z               "line": 281
2026-06-21T09:37:51.9901000Z             },
2026-06-21T09:37:51.9901162Z             {
2026-06-21T09:37:51.9901344Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9901591Z               "line": 358
2026-06-21T09:37:51.9901773Z             },
2026-06-21T09:37:51.9901925Z             {
2026-06-21T09:37:51.9902111Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9902337Z               "line": 381
2026-06-21T09:37:51.9902534Z             },
2026-06-21T09:37:51.9902692Z             {
2026-06-21T09:37:51.9902868Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T09:37:51.9903112Z               "line": 395
2026-06-21T09:37:51.9903303Z             }
2026-06-21T09:37:51.9903460Z           ]
2026-06-21T09:37:51.9903613Z         }
2026-06-21T09:37:51.9903784Z       }
2026-06-21T09:37:51.9903942Z     },
2026-06-21T09:37:51.9904104Z     {
2026-06-21T09:37:51.9904271Z       "id": "REQ-CONSENT-1",
2026-06-21T09:37:51.9905264Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T09:37:51.9906279Z       "requiredStages": [
2026-06-21T09:37:51.9906470Z         "impl",
2026-06-21T09:37:51.9906642Z         "unit"
2026-06-21T09:37:51.9906814Z       ],
2026-06-21T09:37:51.9906970Z       "stages": {
2026-06-21T09:37:51.9907153Z         "doc": {
2026-06-21T09:37:51.9907337Z           "complete": false,
2026-06-21T09:37:51.9907552Z           "evidence": []
2026-06-21T09:37:51.9907737Z         },
2026-06-21T09:37:51.9907898Z         "impl": {
2026-06-21T09:37:51.9908078Z           "complete": true,
2026-06-21T09:37:51.9908273Z           "evidence": [
2026-06-21T09:37:51.9908456Z             {
2026-06-21T09:37:51.9908650Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9908903Z               "line": 27
2026-06-21T09:37:51.9909165Z             },
2026-06-21T09:37:51.9909347Z             {
2026-06-21T09:37:51.9909556Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9909795Z               "line": 75
2026-06-21T09:37:51.9909972Z             },
2026-06-21T09:37:51.9910138Z             {
2026-06-21T09:37:51.9910327Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9910702Z               "line": 98
2026-06-21T09:37:51.9910878Z             },
2026-06-21T09:37:51.9911041Z             {
2026-06-21T09:37:51.9911231Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:37:51.9911470Z               "line": 82
2026-06-21T09:37:51.9911647Z             },
2026-06-21T09:37:51.9911808Z             {
2026-06-21T09:37:51.9912004Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:37:51.9912238Z               "line": 109
2026-06-21T09:37:51.9912433Z             },
2026-06-21T09:37:51.9912592Z             {
2026-06-21T09:37:51.9912772Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:37:51.9913113Z               "line": 127
2026-06-21T09:37:51.9913296Z             },
2026-06-21T09:37:51.9913466Z             {
2026-06-21T09:37:51.9913648Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:37:51.9913877Z               "line": 142
2026-06-21T09:37:51.9914053Z             },
2026-06-21T09:37:51.9914216Z             {
2026-06-21T09:37:51.9914410Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9914630Z               "line": 7048
2026-06-21T09:37:51.9914822Z             }
2026-06-21T09:37:51.9914987Z           ]
2026-06-21T09:37:51.9915137Z         },
2026-06-21T09:37:51.9915292Z         "int": {
2026-06-21T09:37:51.9915468Z           "complete": false,
2026-06-21T09:37:51.9915680Z           "evidence": []
2026-06-21T09:37:51.9915872Z         },
2026-06-21T09:37:51.9916052Z         "unit": {
2026-06-21T09:37:51.9916234Z           "complete": true,
2026-06-21T09:37:51.9916430Z           "evidence": [
2026-06-21T09:37:51.9916601Z             {
2026-06-21T09:37:51.9916806Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9917050Z               "line": 334
2026-06-21T09:37:51.9917230Z             },
2026-06-21T09:37:51.9917393Z             {
2026-06-21T09:37:51.9917592Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9917844Z               "line": 380
2026-06-21T09:37:51.9918028Z             },
2026-06-21T09:37:51.9918192Z             {
2026-06-21T09:37:51.9918383Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9918629Z               "line": 391
2026-06-21T09:37:51.9918810Z             },
2026-06-21T09:37:51.9919162Z             {
2026-06-21T09:37:51.9919359Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:37:51.9919611Z               "line": 165
2026-06-21T09:37:51.9919797Z             },
2026-06-21T09:37:51.9919955Z             {
2026-06-21T09:37:51.9920149Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:37:51.9920378Z               "line": 184
2026-06-21T09:37:51.9920570Z             },
2026-06-21T09:37:51.9920731Z             {
2026-06-21T09:37:51.9920912Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T09:37:51.9921161Z               "line": 204
2026-06-21T09:37:51.9921339Z             },
2026-06-21T09:37:51.9921501Z             {
2026-06-21T09:37:51.9921682Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9921916Z               "line": 8334
2026-06-21T09:37:51.9922087Z             }
2026-06-21T09:37:51.9922235Z           ]
2026-06-21T09:37:51.9922397Z         }
2026-06-21T09:37:51.9922559Z       }
2026-06-21T09:37:51.9922712Z     },
2026-06-21T09:37:51.9922870Z     {
2026-06-21T09:37:51.9923031Z       "id": "REQ-CONSENT-2",
2026-06-21T09:37:51.9923941Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T09:37:51.9924866Z       "requiredStages": [
2026-06-21T09:37:51.9925058Z         "impl",
2026-06-21T09:37:51.9925238Z         "unit"
2026-06-21T09:37:51.9925406Z       ],
2026-06-21T09:37:51.9925562Z       "stages": {
2026-06-21T09:37:51.9925838Z         "doc": {
2026-06-21T09:37:51.9926024Z           "complete": false,
2026-06-21T09:37:51.9926221Z           "evidence": []
2026-06-21T09:37:51.9926404Z         },
2026-06-21T09:37:51.9926574Z         "impl": {
2026-06-21T09:37:51.9926751Z           "complete": true,
2026-06-21T09:37:51.9926956Z           "evidence": [
2026-06-21T09:37:51.9927132Z             {
2026-06-21T09:37:51.9927333Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9927576Z               "line": 140
2026-06-21T09:37:51.9927747Z             },
2026-06-21T09:37:51.9927915Z             {
2026-06-21T09:37:51.9928105Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9928449Z               "line": 165
2026-06-21T09:37:51.9928640Z             },
2026-06-21T09:37:51.9928814Z             {
2026-06-21T09:37:51.9929069Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9929308Z               "line": 199
2026-06-21T09:37:51.9929493Z             },
2026-06-21T09:37:51.9929657Z             {
2026-06-21T09:37:51.9929852Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9930085Z               "line": 241
2026-06-21T09:37:51.9930267Z             },
2026-06-21T09:37:51.9930424Z             {
2026-06-21T09:37:51.9930605Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9930840Z               "line": 269
2026-06-21T09:37:51.9931020Z             },
2026-06-21T09:37:51.9931179Z             {
2026-06-21T09:37:51.9931376Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9931608Z               "line": 300
2026-06-21T09:37:51.9931789Z             },
2026-06-21T09:37:51.9931956Z             {
2026-06-21T09:37:51.9932133Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9932356Z               "line": 6839
2026-06-21T09:37:51.9932543Z             },
2026-06-21T09:37:51.9932695Z             {
2026-06-21T09:37:51.9932866Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9933097Z               "line": 6897
2026-06-21T09:37:51.9933291Z             }
2026-06-21T09:37:51.9933491Z           ]
2026-06-21T09:37:51.9933659Z         },
2026-06-21T09:37:51.9933815Z         "int": {
2026-06-21T09:37:51.9933993Z           "complete": false,
2026-06-21T09:37:51.9934186Z           "evidence": []
2026-06-21T09:37:51.9934368Z         },
2026-06-21T09:37:51.9934520Z         "unit": {
2026-06-21T09:37:51.9934692Z           "complete": true,
2026-06-21T09:37:51.9934892Z           "evidence": [
2026-06-21T09:37:51.9935074Z             {
2026-06-21T09:37:51.9935264Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9935507Z               "line": 419
2026-06-21T09:37:51.9935694Z             },
2026-06-21T09:37:51.9935846Z             {
2026-06-21T09:37:51.9936037Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9936281Z               "line": 436
2026-06-21T09:37:51.9936464Z             },
2026-06-21T09:37:51.9936631Z             {
2026-06-21T09:37:51.9936829Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9937073Z               "line": 472
2026-06-21T09:37:51.9937254Z             },
2026-06-21T09:37:51.9937411Z             {
2026-06-21T09:37:51.9937598Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:51.9937841Z               "line": 516
2026-06-21T09:37:51.9938017Z             },
2026-06-21T09:37:51.9938185Z             {
2026-06-21T09:37:51.9938370Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9938598Z               "line": 9614
2026-06-21T09:37:51.9938780Z             },
2026-06-21T09:37:51.9938937Z             {
2026-06-21T09:37:51.9939186Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9939412Z               "line": 9696
2026-06-21T09:37:51.9939597Z             }
2026-06-21T09:37:51.9939754Z           ]
2026-06-21T09:37:51.9939921Z         }
2026-06-21T09:37:51.9940078Z       }
2026-06-21T09:37:51.9940241Z     },
2026-06-21T09:37:51.9940503Z     {
2026-06-21T09:37:51.9940674Z       "id": "REQ-CONSENT-3",
2026-06-21T09:37:51.9942650Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T09:37:51.9944461Z       "requiredStages": [
2026-06-21T09:37:51.9944653Z         "doc",
2026-06-21T09:37:51.9944827Z         "impl",
2026-06-21T09:37:51.9944991Z         "unit",
2026-06-21T09:37:51.9945156Z         "int"
2026-06-21T09:37:51.9945314Z       ],
2026-06-21T09:37:51.9945505Z       "stages": {
2026-06-21T09:37:51.9945677Z         "doc": {
2026-06-21T09:37:51.9945853Z           "complete": true,
2026-06-21T09:37:51.9946048Z           "evidence": [
2026-06-21T09:37:51.9946221Z             {
2026-06-21T09:37:51.9946401Z               "path": "CONTEXT.md",
2026-06-21T09:37:51.9946611Z               "line": 304
2026-06-21T09:37:51.9946793Z             }
2026-06-21T09:37:51.9946963Z           ]
2026-06-21T09:37:51.9947120Z         },
2026-06-21T09:37:51.9947280Z         "impl": {
2026-06-21T09:37:51.9947451Z           "complete": true,
2026-06-21T09:37:51.9947647Z           "evidence": [
2026-06-21T09:37:51.9947824Z             {
2026-06-21T09:37:51.9948032Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:51.9948286Z               "line": 123
2026-06-21T09:37:51.9948463Z             },
2026-06-21T09:37:51.9948639Z             {
2026-06-21T09:37:51.9948754Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:51.9948839Z               "line": 162
2026-06-21T09:37:51.9948925Z             },
2026-06-21T09:37:51.9949112Z             {
2026-06-21T09:37:51.9949220Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:51.9949316Z               "line": 291
2026-06-21T09:37:51.9949426Z             },
2026-06-21T09:37:51.9949525Z             {
2026-06-21T09:37:51.9949655Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:51.9949741Z               "line": 574
2026-06-21T09:37:51.9949826Z             },
2026-06-21T09:37:51.9949906Z             {
2026-06-21T09:37:51.9950030Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:51.9950124Z               "line": 824
2026-06-21T09:37:51.9950218Z             },
2026-06-21T09:37:51.9950299Z             {
2026-06-21T09:37:51.9950401Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9950500Z               "line": 6965
2026-06-21T09:37:51.9950580Z             }
2026-06-21T09:37:51.9950672Z           ]
2026-06-21T09:37:51.9950772Z         },
2026-06-21T09:37:51.9950853Z         "int": {
2026-06-21T09:37:51.9950948Z           "complete": true,
2026-06-21T09:37:51.9951039Z           "evidence": [
2026-06-21T09:37:51.9951130Z             {
2026-06-21T09:37:51.9951253Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T09:37:51.9951344Z               "line": 16
2026-06-21T09:37:51.9951429Z             }
2026-06-21T09:37:51.9951501Z           ]
2026-06-21T09:37:51.9951592Z         },
2026-06-21T09:37:51.9951673Z         "unit": {
2026-06-21T09:37:51.9951772Z           "complete": true,
2026-06-21T09:37:51.9951859Z           "evidence": [
2026-06-21T09:37:51.9951951Z             {
2026-06-21T09:37:51.9952073Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:51.9952168Z               "line": 1019
2026-06-21T09:37:51.9952261Z             },
2026-06-21T09:37:51.9952341Z             {
2026-06-21T09:37:51.9952463Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:51.9952658Z               "line": 1066
2026-06-21T09:37:51.9952747Z             },
2026-06-21T09:37:51.9952837Z             {
2026-06-21T09:37:51.9952948Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:51.9953053Z               "line": 1394
2026-06-21T09:37:51.9953138Z             }
2026-06-21T09:37:51.9953220Z           ]
2026-06-21T09:37:51.9953319Z         }
2026-06-21T09:37:51.9953405Z       }
2026-06-21T09:37:51.9953486Z     },
2026-06-21T09:37:51.9953573Z     {
2026-06-21T09:37:51.9953691Z       "id": "REQ-CONV-1",
2026-06-21T09:37:51.9955166Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T09:37:51.9955383Z       "requiredStages": [
2026-06-21T09:37:51.9955469Z         "impl",
2026-06-21T09:37:51.9955546Z         "unit"
2026-06-21T09:37:51.9955635Z       ],
2026-06-21T09:37:51.9955721Z       "stages": {
2026-06-21T09:37:51.9955813Z         "doc": {
2026-06-21T09:37:51.9955908Z           "complete": false,
2026-06-21T09:37:51.9955998Z           "evidence": []
2026-06-21T09:37:51.9956084Z         },
2026-06-21T09:37:51.9956175Z         "impl": {
2026-06-21T09:37:51.9956265Z           "complete": true,
2026-06-21T09:37:51.9956355Z           "evidence": [
2026-06-21T09:37:51.9956438Z             {
2026-06-21T09:37:51.9956566Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:51.9956656Z               "line": 988
2026-06-21T09:37:51.9956743Z             },
2026-06-21T09:37:51.9956828Z             {
2026-06-21T09:37:51.9956951Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:51.9957043Z               "line": 94
2026-06-21T09:37:51.9957134Z             },
2026-06-21T09:37:51.9957223Z             {
2026-06-21T09:37:51.9957333Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:51.9957421Z               "line": 345
2026-06-21T09:37:51.9957509Z             },
2026-06-21T09:37:51.9957599Z             {
2026-06-21T09:37:51.9957714Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:51.9957803Z               "line": 387
2026-06-21T09:37:51.9957883Z             },
2026-06-21T09:37:51.9957968Z             {
2026-06-21T09:37:51.9958093Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:51.9958193Z               "line": 472
2026-06-21T09:37:51.9958283Z             },
2026-06-21T09:37:51.9958360Z             {
2026-06-21T09:37:51.9958484Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:51.9958574Z               "line": 667
2026-06-21T09:37:51.9958651Z             },
2026-06-21T09:37:51.9958746Z             {
2026-06-21T09:37:51.9958855Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:51.9959037Z               "line": 693
2026-06-21T09:37:51.9959109Z             },
2026-06-21T09:37:51.9959199Z             {
2026-06-21T09:37:51.9959324Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:51.9959404Z               "line": 369
2026-06-21T09:37:51.9959494Z             },
2026-06-21T09:37:51.9959571Z             {
2026-06-21T09:37:51.9959695Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:37:51.9959790Z               "line": 19
2026-06-21T09:37:51.9959871Z             }
2026-06-21T09:37:51.9959964Z           ]
2026-06-21T09:37:51.9960043Z         },
2026-06-21T09:37:51.9960124Z         "int": {
2026-06-21T09:37:51.9960221Z           "complete": false,
2026-06-21T09:37:51.9960316Z           "evidence": []
2026-06-21T09:37:51.9960400Z         },
2026-06-21T09:37:51.9960480Z         "unit": {
2026-06-21T09:37:51.9960571Z           "complete": true,
2026-06-21T09:37:51.9960760Z           "evidence": [
2026-06-21T09:37:51.9960860Z             {
2026-06-21T09:37:51.9960975Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:51.9961070Z               "line": 1263
2026-06-21T09:37:51.9961150Z             },
2026-06-21T09:37:51.9961233Z             {
2026-06-21T09:37:51.9961356Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:37:51.9961446Z               "line": 108
2026-06-21T09:37:51.9961528Z             },
2026-06-21T09:37:51.9961609Z             {
2026-06-21T09:37:51.9961732Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:37:51.9961928Z               "line": 134
2026-06-21T09:37:51.9962004Z             },
2026-06-21T09:37:51.9962094Z             {
2026-06-21T09:37:51.9962205Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T09:37:51.9962300Z               "line": 144
2026-06-21T09:37:51.9962376Z             }
2026-06-21T09:37:51.9962477Z           ]
2026-06-21T09:37:51.9962558Z         }
2026-06-21T09:37:51.9962643Z       }
2026-06-21T09:37:51.9962729Z     },
2026-06-21T09:37:51.9962811Z     {
2026-06-21T09:37:51.9962911Z       "id": "REQ-CONV-2",
2026-06-21T09:37:51.9963989Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T09:37:51.9964075Z       "requiredStages": [
2026-06-21T09:37:51.9964185Z         "impl",
2026-06-21T09:37:51.9964266Z         "unit"
2026-06-21T09:37:51.9964351Z       ],
2026-06-21T09:37:51.9964438Z       "stages": {
2026-06-21T09:37:51.9964519Z         "doc": {
2026-06-21T09:37:51.9964604Z           "complete": false,
2026-06-21T09:37:51.9964700Z           "evidence": []
2026-06-21T09:37:51.9964786Z         },
2026-06-21T09:37:51.9964891Z         "impl": {
2026-06-21T09:37:51.9964986Z           "complete": true,
2026-06-21T09:37:51.9965068Z           "evidence": [
2026-06-21T09:37:51.9965162Z             {
2026-06-21T09:37:51.9965281Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:51.9965369Z               "line": 409
2026-06-21T09:37:51.9965458Z             },
2026-06-21T09:37:51.9965538Z             {
2026-06-21T09:37:51.9965669Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:37:51.9965750Z               "line": 119
2026-06-21T09:37:51.9965843Z             },
2026-06-21T09:37:51.9965928Z             {
2026-06-21T09:37:51.9966063Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:51.9966154Z               "line": 841
2026-06-21T09:37:51.9966238Z             },
2026-06-21T09:37:51.9966325Z             {
2026-06-21T09:37:51.9966449Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:51.9966553Z               "line": 852
2026-06-21T09:37:51.9966640Z             },
2026-06-21T09:37:51.9966721Z             {
2026-06-21T09:37:51.9966853Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:51.9966940Z               "line": 334
2026-06-21T09:37:51.9967031Z             },
2026-06-21T09:37:51.9967111Z             {
2026-06-21T09:37:51.9967230Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9967322Z               "line": 3074
2026-06-21T09:37:51.9967407Z             },
2026-06-21T09:37:51.9967493Z             {
2026-06-21T09:37:51.9967594Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9967689Z               "line": 3090
2026-06-21T09:37:51.9967778Z             },
2026-06-21T09:37:51.9967870Z             {
2026-06-21T09:37:51.9967971Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:51.9968060Z               "line": 3170
2026-06-21T09:37:51.9968150Z             }
2026-06-21T09:37:51.9968231Z           ]
2026-06-21T09:37:51.9968391Z         },
2026-06-21T09:37:51.9968477Z         "int": {
2026-06-21T09:37:51.9968572Z           "complete": false,
2026-06-21T09:37:51.9968663Z           "evidence": []
2026-06-21T09:37:51.9968748Z         },
2026-06-21T09:37:51.9968838Z         "unit": {
2026-06-21T09:37:51.9968935Z           "complete": true,
2026-06-21T09:37:51.9969096Z           "evidence": [
2026-06-21T09:37:51.9969172Z             {
2026-06-21T09:37:51.9969301Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:51.9969401Z               "line": 889
2026-06-21T09:37:51.9969487Z             },
2026-06-21T09:37:51.9969579Z             {
2026-06-21T09:37:51.9969702Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:51.9969903Z               "line": 1014
2026-06-21T09:37:51.9969988Z             },
2026-06-21T09:37:51.9970074Z             {
2026-06-21T09:37:51.9970209Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:37:51.9970471Z               "line": 215
2026-06-21T09:37:51.9970617Z             }
2026-06-21T09:37:52.0025088Z           ]
2026-06-21T09:37:52.0025332Z         }
2026-06-21T09:37:52.0025436Z       }
2026-06-21T09:37:52.0025533Z     },
2026-06-21T09:37:52.0025623Z     {
2026-06-21T09:37:52.0025747Z       "id": "REQ-DAEMON-1",
2026-06-21T09:37:52.0025943Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T09:37:52.0026052Z       "requiredStages": [
2026-06-21T09:37:52.0026148Z         "impl",
2026-06-21T09:37:52.0026238Z         "unit",
2026-06-21T09:37:52.0026333Z         "int"
2026-06-21T09:37:52.0026422Z       ],
2026-06-21T09:37:52.0026513Z       "stages": {
2026-06-21T09:37:52.0026649Z         "doc": {
2026-06-21T09:37:52.0026749Z           "complete": false,
2026-06-21T09:37:52.0026844Z           "evidence": []
2026-06-21T09:37:52.0026932Z         },
2026-06-21T09:37:52.0027020Z         "impl": {
2026-06-21T09:37:52.0027111Z           "complete": true,
2026-06-21T09:37:52.0027208Z           "evidence": [
2026-06-21T09:37:52.0027298Z             {
2026-06-21T09:37:52.0027431Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0027532Z               "line": 229
2026-06-21T09:37:52.0027608Z             },
2026-06-21T09:37:52.0027693Z             {
2026-06-21T09:37:52.0027808Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.0027907Z               "line": 12
2026-06-21T09:37:52.0028003Z             },
2026-06-21T09:37:52.0028070Z             {
2026-06-21T09:37:52.0028247Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0028332Z               "line": 16
2026-06-21T09:37:52.0028419Z             },
2026-06-21T09:37:52.0028500Z             {
2026-06-21T09:37:52.0028628Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0028720Z               "line": 309
2026-06-21T09:37:52.0028805Z             },
2026-06-21T09:37:52.0028889Z             {
2026-06-21T09:37:52.0029082Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0029176Z               "line": 24
2026-06-21T09:37:52.0029251Z             },
2026-06-21T09:37:52.0029380Z             {
2026-06-21T09:37:52.0029528Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0029614Z               "line": 262
2026-06-21T09:37:52.0029734Z             },
2026-06-21T09:37:52.0029839Z             {
2026-06-21T09:37:52.0029966Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0030054Z               "line": 279
2026-06-21T09:37:52.0030144Z             },
2026-06-21T09:37:52.0030228Z             {
2026-06-21T09:37:52.0030339Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0030439Z               "line": 356
2026-06-21T09:37:52.0030520Z             },
2026-06-21T09:37:52.0030605Z             {
2026-06-21T09:37:52.0030726Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0030825Z               "line": 670
2026-06-21T09:37:52.0030930Z             },
2026-06-21T09:37:52.0031313Z             {
2026-06-21T09:37:52.0031439Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T09:37:52.0031525Z               "line": 15
2026-06-21T09:37:52.0031606Z             },
2026-06-21T09:37:52.0031692Z             {
2026-06-21T09:37:52.0031809Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0031909Z               "line": 241
2026-06-21T09:37:52.0032005Z             },
2026-06-21T09:37:52.0032099Z             {
2026-06-21T09:37:52.0032224Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T09:37:52.0032305Z               "line": 13
2026-06-21T09:37:52.0032391Z             },
2026-06-21T09:37:52.0032597Z             {
2026-06-21T09:37:52.0032724Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0032824Z               "line": 382
2026-06-21T09:37:52.0032911Z             },
2026-06-21T09:37:52.0032996Z             {
2026-06-21T09:37:52.0033105Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0033202Z               "line": 494
2026-06-21T09:37:52.0033287Z             }
2026-06-21T09:37:52.0033378Z           ]
2026-06-21T09:37:52.0033463Z         },
2026-06-21T09:37:52.0033550Z         "int": {
2026-06-21T09:37:52.0033649Z           "complete": true,
2026-06-21T09:37:52.0033744Z           "evidence": [
2026-06-21T09:37:52.0033827Z             {
2026-06-21T09:37:52.0033997Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T09:37:52.0034093Z               "line": 2
2026-06-21T09:37:52.0034175Z             },
2026-06-21T09:37:52.0034260Z             {
2026-06-21T09:37:52.0034415Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T09:37:52.0034521Z               "line": 16
2026-06-21T09:37:52.0034600Z             },
2026-06-21T09:37:52.0034700Z             {
2026-06-21T09:37:52.0034843Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T09:37:52.0034953Z               "line": 12
2026-06-21T09:37:52.0035043Z             },
2026-06-21T09:37:52.0035124Z             {
2026-06-21T09:37:52.0035314Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T09:37:52.0035410Z               "line": 12
2026-06-21T09:37:52.0035492Z             },
2026-06-21T09:37:52.0035578Z             {
2026-06-21T09:37:52.0035705Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:37:52.0035793Z               "line": 44
2026-06-21T09:37:52.0035877Z             }
2026-06-21T09:37:52.0035968Z           ]
2026-06-21T09:37:52.0036054Z         },
2026-06-21T09:37:52.0036140Z         "unit": {
2026-06-21T09:37:52.0036249Z           "complete": true,
2026-06-21T09:37:52.0036335Z           "evidence": [
2026-06-21T09:37:52.0036427Z             {
2026-06-21T09:37:52.0036545Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.0036641Z               "line": 285
2026-06-21T09:37:52.0036727Z             },
2026-06-21T09:37:52.0036818Z             {
2026-06-21T09:37:52.0036939Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.0037049Z               "line": 293
2026-06-21T09:37:52.0037135Z             },
2026-06-21T09:37:52.0037224Z             {
2026-06-21T09:37:52.0037338Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.0037434Z               "line": 309
2026-06-21T09:37:52.0037520Z             },
2026-06-21T09:37:52.0037604Z             {
2026-06-21T09:37:52.0037715Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.0037815Z               "line": 317
2026-06-21T09:37:52.0037896Z             },
2026-06-21T09:37:52.0037986Z             {
2026-06-21T09:37:52.0038106Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0038192Z               "line": 659
2026-06-21T09:37:52.0038282Z             },
2026-06-21T09:37:52.0038373Z             {
2026-06-21T09:37:52.0038511Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0038769Z               "line": 729
2026-06-21T09:37:52.0038854Z             },
2026-06-21T09:37:52.0039027Z             {
2026-06-21T09:37:52.0039135Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0039251Z               "line": 1211
2026-06-21T09:37:52.0039347Z             },
2026-06-21T09:37:52.0039445Z             {
2026-06-21T09:37:52.0039551Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0039647Z               "line": 1248
2026-06-21T09:37:52.0039732Z             },
2026-06-21T09:37:52.0039821Z             {
2026-06-21T09:37:52.0039964Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0040159Z               "line": 1271
2026-06-21T09:37:52.0040241Z             },
2026-06-21T09:37:52.0040328Z             {
2026-06-21T09:37:52.0040441Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0040536Z               "line": 1300
2026-06-21T09:37:52.0040618Z             },
2026-06-21T09:37:52.0040714Z             {
2026-06-21T09:37:52.0040822Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0040914Z               "line": 1348
2026-06-21T09:37:52.0041013Z             },
2026-06-21T09:37:52.0041085Z             {
2026-06-21T09:37:52.0041200Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0041291Z               "line": 1391
2026-06-21T09:37:52.0041381Z             },
2026-06-21T09:37:52.0041466Z             {
2026-06-21T09:37:52.0041587Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T09:37:52.0041675Z               "line": 106
2026-06-21T09:37:52.0041757Z             },
2026-06-21T09:37:52.0041858Z             {
2026-06-21T09:37:52.0041972Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T09:37:52.0042071Z               "line": 132
2026-06-21T09:37:52.0042152Z             },
2026-06-21T09:37:52.0042228Z             {
2026-06-21T09:37:52.0042345Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0042440Z               "line": 530
2026-06-21T09:37:52.0042536Z             }
2026-06-21T09:37:52.0042618Z           ]
2026-06-21T09:37:52.0042712Z         }
2026-06-21T09:37:52.0042798Z       }
2026-06-21T09:37:52.0042884Z     },
2026-06-21T09:37:52.0042970Z     {
2026-06-21T09:37:52.0043065Z       "id": "REQ-DAEMON-2",
2026-06-21T09:37:52.0043209Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T09:37:52.0043294Z       "requiredStages": [
2026-06-21T09:37:52.0043379Z         "impl",
2026-06-21T09:37:52.0043462Z         "unit",
2026-06-21T09:37:52.0043551Z         "int"
2026-06-21T09:37:52.0043632Z       ],
2026-06-21T09:37:52.0043727Z       "stages": {
2026-06-21T09:37:52.0043810Z         "doc": {
2026-06-21T09:37:52.0043899Z           "complete": true,
2026-06-21T09:37:52.0043990Z           "evidence": [
2026-06-21T09:37:52.0044072Z             {
2026-06-21T09:37:52.0044209Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T09:37:52.0044295Z               "line": 250
2026-06-21T09:37:52.0044372Z             }
2026-06-21T09:37:52.0044454Z           ]
2026-06-21T09:37:52.0044538Z         },
2026-06-21T09:37:52.0044629Z         "impl": {
2026-06-21T09:37:52.0044716Z           "complete": true,
2026-06-21T09:37:52.0044806Z           "evidence": [
2026-06-21T09:37:52.0044900Z             {
2026-06-21T09:37:52.0045014Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0045110Z               "line": 23
2026-06-21T09:37:52.0045193Z             },
2026-06-21T09:37:52.0045288Z             {
2026-06-21T09:37:52.0045394Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0045490Z               "line": 844
2026-06-21T09:37:52.0045574Z             },
2026-06-21T09:37:52.0045655Z             {
2026-06-21T09:37:52.0045775Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0045860Z               "line": 869
2026-06-21T09:37:52.0045941Z             },
2026-06-21T09:37:52.0046033Z             {
2026-06-21T09:37:52.0046261Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0046358Z               "line": 1105
2026-06-21T09:37:52.0046442Z             },
2026-06-21T09:37:52.0046528Z             {
2026-06-21T09:37:52.0046648Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0046743Z               "line": 32
2026-06-21T09:37:52.0046843Z             },
2026-06-21T09:37:52.0046924Z             {
2026-06-21T09:37:52.0047039Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0047129Z               "line": 1185
2026-06-21T09:37:52.0047210Z             },
2026-06-21T09:37:52.0047481Z             {
2026-06-21T09:37:52.0047590Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0047671Z               "line": 1987
2026-06-21T09:37:52.0047746Z             },
2026-06-21T09:37:52.0047836Z             {
2026-06-21T09:37:52.0047956Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0048056Z               "line": 2274
2026-06-21T09:37:52.0048179Z             },
2026-06-21T09:37:52.0048290Z             {
2026-06-21T09:37:52.0048404Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:37:52.0048498Z               "line": 11
2026-06-21T09:37:52.0048591Z             },
2026-06-21T09:37:52.0048671Z             {
2026-06-21T09:37:52.0048780Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0048866Z               "line": 153
2026-06-21T09:37:52.0049038Z             },
2026-06-21T09:37:52.0049119Z             {
2026-06-21T09:37:52.0049244Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0049343Z               "line": 343
2026-06-21T09:37:52.0049429Z             },
2026-06-21T09:37:52.0049510Z             {
2026-06-21T09:37:52.0049620Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0049710Z               "line": 13
2026-06-21T09:37:52.0049801Z             },
2026-06-21T09:37:52.0049888Z             {
2026-06-21T09:37:52.0050015Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0050101Z               "line": 27
2026-06-21T09:37:52.0050198Z             },
2026-06-21T09:37:52.0050282Z             {
2026-06-21T09:37:52.0050409Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0050501Z               "line": 173
2026-06-21T09:37:52.0050578Z             },
2026-06-21T09:37:52.0050668Z             {
2026-06-21T09:37:52.0050777Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0050878Z               "line": 682
2026-06-21T09:37:52.0050964Z             },
2026-06-21T09:37:52.0051048Z             {
2026-06-21T09:37:52.0051164Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0051259Z               "line": 903
2026-06-21T09:37:52.0051344Z             },
2026-06-21T09:37:52.0051425Z             {
2026-06-21T09:37:52.0051545Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0051640Z               "line": 1050
2026-06-21T09:37:52.0051721Z             },
2026-06-21T09:37:52.0051808Z             {
2026-06-21T09:37:52.0051921Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0052012Z               "line": 1139
2026-06-21T09:37:52.0052090Z             },
2026-06-21T09:37:52.0052180Z             {
2026-06-21T09:37:52.0052303Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0052389Z               "line": 1261
2026-06-21T09:37:52.0052471Z             },
2026-06-21T09:37:52.0052555Z             {
2026-06-21T09:37:52.0052674Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:37:52.0052764Z               "line": 10
2026-06-21T09:37:52.0052849Z             }
2026-06-21T09:37:52.0052938Z           ]
2026-06-21T09:37:52.0053024Z         },
2026-06-21T09:37:52.0053111Z         "int": {
2026-06-21T09:37:52.0053196Z           "complete": true,
2026-06-21T09:37:52.0053291Z           "evidence": [
2026-06-21T09:37:52.0053477Z             {
2026-06-21T09:37:52.0053601Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.0053697Z               "line": 17
2026-06-21T09:37:52.0053783Z             },
2026-06-21T09:37:52.0053873Z             {
2026-06-21T09:37:52.0054003Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:37:52.0054093Z               "line": 90
2026-06-21T09:37:52.0054179Z             },
2026-06-21T09:37:52.0054269Z             {
2026-06-21T09:37:52.0054399Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:37:52.0054479Z               "line": 110
2026-06-21T09:37:52.0054569Z             },
2026-06-21T09:37:52.0054760Z             {
2026-06-21T09:37:52.0054888Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:37:52.0054976Z               "line": 186
2026-06-21T09:37:52.0055066Z             },
2026-06-21T09:37:52.0055151Z             {
2026-06-21T09:37:52.0055262Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:37:52.0055362Z               "line": 309
2026-06-21T09:37:52.0055451Z             },
2026-06-21T09:37:52.0055536Z             {
2026-06-21T09:37:52.0055655Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T09:37:52.0055744Z               "line": 128
2026-06-21T09:37:52.0055829Z             },
2026-06-21T09:37:52.0055916Z             {
2026-06-21T09:37:52.0056040Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T09:37:52.0056120Z               "line": 59
2026-06-21T09:37:52.0056210Z             }
2026-06-21T09:37:52.0056303Z           ]
2026-06-21T09:37:52.0056388Z         },
2026-06-21T09:37:52.0056487Z         "unit": {
2026-06-21T09:37:52.0056579Z           "complete": true,
2026-06-21T09:37:52.0056678Z           "evidence": [
2026-06-21T09:37:52.0056763Z             {
2026-06-21T09:37:52.0056884Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:37:52.0056983Z               "line": 62
2026-06-21T09:37:52.0057074Z             },
2026-06-21T09:37:52.0057164Z             {
2026-06-21T09:37:52.0057285Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:37:52.0057379Z               "line": 76
2026-06-21T09:37:52.0057461Z             },
2026-06-21T09:37:52.0057557Z             {
2026-06-21T09:37:52.0057665Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T09:37:52.0057756Z               "line": 88
2026-06-21T09:37:52.0057852Z             },
2026-06-21T09:37:52.0057938Z             {
2026-06-21T09:37:52.0058060Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0058146Z               "line": 347
2026-06-21T09:37:52.0058250Z             },
2026-06-21T09:37:52.0058334Z             {
2026-06-21T09:37:52.0058443Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0058540Z               "line": 873
2026-06-21T09:37:52.0058621Z             },
2026-06-21T09:37:52.0058711Z             {
2026-06-21T09:37:52.0058821Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0058926Z               "line": 881
2026-06-21T09:37:52.0059092Z             },
2026-06-21T09:37:52.0059431Z             {
2026-06-21T09:37:52.0059674Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0059813Z               "line": 898
2026-06-21T09:37:52.0059932Z             },
2026-06-21T09:37:52.0060041Z             {
2026-06-21T09:37:52.0060222Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0060346Z               "line": 974
2026-06-21T09:37:52.0060462Z             },
2026-06-21T09:37:52.0060585Z             {
2026-06-21T09:37:52.0060753Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0060904Z               "line": 1370
2026-06-21T09:37:52.0061018Z             },
2026-06-21T09:37:52.0061138Z             {
2026-06-21T09:37:52.0061313Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0061443Z               "line": 1382
2026-06-21T09:37:52.0061781Z             },
2026-06-21T09:37:52.0061881Z             {
2026-06-21T09:37:52.0062063Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:37:52.0062182Z               "line": 110
2026-06-21T09:37:52.0062305Z             },
2026-06-21T09:37:52.0062411Z             {
2026-06-21T09:37:52.0062576Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:37:52.0062702Z               "line": 145
2026-06-21T09:37:52.0062815Z             }
2026-06-21T09:37:52.0062921Z           ]
2026-06-21T09:37:52.0063031Z         }
2026-06-21T09:37:52.0063148Z       }
2026-06-21T09:37:52.0063272Z     },
2026-06-21T09:37:52.0063377Z     {
2026-06-21T09:37:52.0063651Z       "id": "REQ-DAEMON-3",
2026-06-21T09:37:52.0063875Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T09:37:52.0064000Z       "requiredStages": [
2026-06-21T09:37:52.0064119Z         "impl",
2026-06-21T09:37:52.0064233Z         "unit",
2026-06-21T09:37:52.0064353Z         "int"
2026-06-21T09:37:52.0064475Z       ],
2026-06-21T09:37:52.0064606Z       "stages": {
2026-06-21T09:37:52.0064720Z         "doc": {
2026-06-21T09:37:52.0064853Z           "complete": false,
2026-06-21T09:37:52.0064963Z           "evidence": []
2026-06-21T09:37:52.0065202Z         },
2026-06-21T09:37:52.0065316Z         "impl": {
2026-06-21T09:37:52.0065439Z           "complete": true,
2026-06-21T09:37:52.0065569Z           "evidence": [
2026-06-21T09:37:52.0065677Z             {
2026-06-21T09:37:52.0065846Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0065978Z               "line": 14
2026-06-21T09:37:52.0066106Z             },
2026-06-21T09:37:52.0066239Z             {
2026-06-21T09:37:52.0066413Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:37:52.0066543Z               "line": 11
2026-06-21T09:37:52.0066657Z             },
2026-06-21T09:37:52.0066770Z             {
2026-06-21T09:37:52.0066919Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.0067052Z               "line": 305
2026-06-21T09:37:52.0067149Z             },
2026-06-21T09:37:52.0067234Z             {
2026-06-21T09:37:52.0067343Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0067434Z               "line": 1956
2026-06-21T09:37:52.0067525Z             },
2026-06-21T09:37:52.0067606Z             {
2026-06-21T09:37:52.0067720Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0067817Z               "line": 4235
2026-06-21T09:37:52.0067906Z             },
2026-06-21T09:37:52.0068006Z             {
2026-06-21T09:37:52.0068146Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0068278Z               "line": 4256
2026-06-21T09:37:52.0068403Z             }
2026-06-21T09:37:52.0068512Z           ]
2026-06-21T09:37:52.0068630Z         },
2026-06-21T09:37:52.0068739Z         "int": {
2026-06-21T09:37:52.0068871Z           "complete": true,
2026-06-21T09:37:52.0069076Z           "evidence": [
2026-06-21T09:37:52.0069200Z             {
2026-06-21T09:37:52.0069376Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:52.0069543Z               "line": 49
2026-06-21T09:37:52.0069624Z             },
2026-06-21T09:37:52.0069706Z             {
2026-06-21T09:37:52.0069830Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:52.0069924Z               "line": 487
2026-06-21T09:37:52.0070006Z             }
2026-06-21T09:37:52.0070096Z           ]
2026-06-21T09:37:52.0070177Z         },
2026-06-21T09:37:52.0070277Z         "unit": {
2026-06-21T09:37:52.0070360Z           "complete": true,
2026-06-21T09:37:52.0070453Z           "evidence": [
2026-06-21T09:37:52.0070539Z             {
2026-06-21T09:37:52.0070674Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0070768Z               "line": 1553
2026-06-21T09:37:52.0070840Z             },
2026-06-21T09:37:52.0070921Z             {
2026-06-21T09:37:52.0071027Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0071241Z               "line": 10715
2026-06-21T09:37:52.0071318Z             }
2026-06-21T09:37:52.0071393Z           ]
2026-06-21T09:37:52.0071488Z         }
2026-06-21T09:37:52.0071573Z       }
2026-06-21T09:37:52.0071655Z     },
2026-06-21T09:37:52.0071731Z     {
2026-06-21T09:37:52.0071835Z       "id": "REQ-DAEMON-4",
2026-06-21T09:37:52.0071965Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T09:37:52.0072065Z       "requiredStages": [
2026-06-21T09:37:52.0072145Z         "impl",
2026-06-21T09:37:52.0072231Z         "unit",
2026-06-21T09:37:52.0072313Z         "int"
2026-06-21T09:37:52.0072394Z       ],
2026-06-21T09:37:52.0072484Z       "stages": {
2026-06-21T09:37:52.0072665Z         "doc": {
2026-06-21T09:37:52.0072770Z           "complete": false,
2026-06-21T09:37:52.0072856Z           "evidence": []
2026-06-21T09:37:52.0072938Z         },
2026-06-21T09:37:52.0073023Z         "impl": {
2026-06-21T09:37:52.0073113Z           "complete": true,
2026-06-21T09:37:52.0073195Z           "evidence": [
2026-06-21T09:37:52.0073290Z             {
2026-06-21T09:37:52.0073418Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0073505Z               "line": 464
2026-06-21T09:37:52.0073586Z             },
2026-06-21T09:37:52.0073671Z             {
2026-06-21T09:37:52.0073785Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0073871Z               "line": 529
2026-06-21T09:37:52.0073955Z             },
2026-06-21T09:37:52.0074040Z             {
2026-06-21T09:37:52.0074154Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0074246Z               "line": 551
2026-06-21T09:37:52.0074345Z             }
2026-06-21T09:37:52.0074425Z           ]
2026-06-21T09:37:52.0074512Z         },
2026-06-21T09:37:52.0074594Z         "int": {
2026-06-21T09:37:52.0074693Z           "complete": true,
2026-06-21T09:37:52.0074779Z           "evidence": [
2026-06-21T09:37:52.0074861Z             {
2026-06-21T09:37:52.0074993Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T09:37:52.0075089Z               "line": 42
2026-06-21T09:37:52.0075170Z             }
2026-06-21T09:37:52.0075256Z           ]
2026-06-21T09:37:52.0075341Z         },
2026-06-21T09:37:52.0075423Z         "unit": {
2026-06-21T09:37:52.0075519Z           "complete": true,
2026-06-21T09:37:52.0075609Z           "evidence": [
2026-06-21T09:37:52.0075684Z             {
2026-06-21T09:37:52.0075800Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.0075895Z               "line": 428
2026-06-21T09:37:52.0075985Z             },
2026-06-21T09:37:52.0076077Z             {
2026-06-21T09:37:52.0076195Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0076296Z               "line": 957
2026-06-21T09:37:52.0076382Z             },
2026-06-21T09:37:52.0076468Z             {
2026-06-21T09:37:52.0076585Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0076685Z               "line": 1027
2026-06-21T09:37:52.0076785Z             },
2026-06-21T09:37:52.0076865Z             {
2026-06-21T09:37:52.0076983Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0077074Z               "line": 1057
2026-06-21T09:37:52.0077165Z             },
2026-06-21T09:37:52.0077241Z             {
2026-06-21T09:37:52.0077365Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0077456Z               "line": 1090
2026-06-21T09:37:52.0077541Z             }
2026-06-21T09:37:52.0077626Z           ]
2026-06-21T09:37:52.0077709Z         }
2026-06-21T09:37:52.0077799Z       }
2026-06-21T09:37:52.0077880Z     },
2026-06-21T09:37:52.0077965Z     {
2026-06-21T09:37:52.0078066Z       "id": "REQ-DAEMON-5",
2026-06-21T09:37:52.0079660Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T09:37:52.0079898Z       "requiredStages": [
2026-06-21T09:37:52.0079980Z         "impl",
2026-06-21T09:37:52.0080066Z         "unit"
2026-06-21T09:37:52.0080150Z       ],
2026-06-21T09:37:52.0080237Z       "stages": {
2026-06-21T09:37:52.0080332Z         "doc": {
2026-06-21T09:37:52.0080413Z           "complete": false,
2026-06-21T09:37:52.0080513Z           "evidence": []
2026-06-21T09:37:52.0080595Z         },
2026-06-21T09:37:52.0080684Z         "impl": {
2026-06-21T09:37:52.0080876Z           "complete": true,
2026-06-21T09:37:52.0080967Z           "evidence": [
2026-06-21T09:37:52.0081048Z             {
2026-06-21T09:37:52.0081176Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0081263Z               "line": 476
2026-06-21T09:37:52.0081342Z             },
2026-06-21T09:37:52.0081438Z             {
2026-06-21T09:37:52.0081564Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0081652Z               "line": 769
2026-06-21T09:37:52.0081734Z             },
2026-06-21T09:37:52.0081826Z             {
2026-06-21T09:37:52.0081949Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0082028Z               "line": 782
2026-06-21T09:37:52.0082118Z             },
2026-06-21T09:37:52.0082205Z             {
2026-06-21T09:37:52.0082319Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0082410Z               "line": 800
2026-06-21T09:37:52.0082491Z             },
2026-06-21T09:37:52.0082591Z             {
2026-06-21T09:37:52.0082710Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0082796Z               "line": 841
2026-06-21T09:37:52.0082882Z             }
2026-06-21T09:37:52.0082963Z           ]
2026-06-21T09:37:52.0083044Z         },
2026-06-21T09:37:52.0083130Z         "int": {
2026-06-21T09:37:52.0083240Z           "complete": false,
2026-06-21T09:37:52.0083325Z           "evidence": []
2026-06-21T09:37:52.0083411Z         },
2026-06-21T09:37:52.0083498Z         "unit": {
2026-06-21T09:37:52.0083588Z           "complete": true,
2026-06-21T09:37:52.0083683Z           "evidence": [
2026-06-21T09:37:52.0083765Z             {
2026-06-21T09:37:52.0083888Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0083983Z               "line": 1189
2026-06-21T09:37:52.0084065Z             },
2026-06-21T09:37:52.0084151Z             {
2026-06-21T09:37:52.0084260Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0084359Z               "line": 1213
2026-06-21T09:37:52.0084440Z             },
2026-06-21T09:37:52.0084525Z             {
2026-06-21T09:37:52.0084652Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0084729Z               "line": 1239
2026-06-21T09:37:52.0084815Z             }
2026-06-21T09:37:52.0084905Z           ]
2026-06-21T09:37:52.0084995Z         }
2026-06-21T09:37:52.0085082Z       }
2026-06-21T09:37:52.0085168Z     },
2026-06-21T09:37:52.0085253Z     {
2026-06-21T09:37:52.0085344Z       "id": "REQ-DAEMON-6",
2026-06-21T09:37:52.0087312Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T09:37:52.0087425Z       "requiredStages": [
2026-06-21T09:37:52.0087505Z         "impl",
2026-06-21T09:37:52.0087683Z         "unit"
2026-06-21T09:37:52.0087763Z       ],
2026-06-21T09:37:52.0087848Z       "stages": {
2026-06-21T09:37:52.0087930Z         "doc": {
2026-06-21T09:37:52.0088035Z           "complete": false,
2026-06-21T09:37:52.0088125Z           "evidence": []
2026-06-21T09:37:52.0088211Z         },
2026-06-21T09:37:52.0088302Z         "impl": {
2026-06-21T09:37:52.0088393Z           "complete": true,
2026-06-21T09:37:52.0088487Z           "evidence": [
2026-06-21T09:37:52.0088569Z             {
2026-06-21T09:37:52.0088697Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0088783Z               "line": 495
2026-06-21T09:37:52.0089031Z             },
2026-06-21T09:37:52.0089117Z             {
2026-06-21T09:37:52.0089237Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0089350Z               "line": 526
2026-06-21T09:37:52.0089427Z             },
2026-06-21T09:37:52.0089509Z             {
2026-06-21T09:37:52.0089633Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0089721Z               "line": 55
2026-06-21T09:37:52.0089811Z             },
2026-06-21T09:37:52.0089888Z             {
2026-06-21T09:37:52.0090006Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0090091Z               "line": 70
2026-06-21T09:37:52.0090177Z             },
2026-06-21T09:37:52.0090258Z             {
2026-06-21T09:37:52.0090363Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0090453Z               "line": 2020
2026-06-21T09:37:52.0090535Z             },
2026-06-21T09:37:52.0090616Z             {
2026-06-21T09:37:52.0090720Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0090821Z               "line": 2046
2026-06-21T09:37:52.0090902Z             }
2026-06-21T09:37:52.0090983Z           ]
2026-06-21T09:37:52.0091063Z         },
2026-06-21T09:37:52.0091150Z         "int": {
2026-06-21T09:37:52.0091249Z           "complete": false,
2026-06-21T09:37:52.0091331Z           "evidence": []
2026-06-21T09:37:52.0091426Z         },
2026-06-21T09:37:52.0091508Z         "unit": {
2026-06-21T09:37:52.0091598Z           "complete": true,
2026-06-21T09:37:52.0091698Z           "evidence": [
2026-06-21T09:37:52.0091785Z             {
2026-06-21T09:37:52.0091903Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0091984Z               "line": 288
2026-06-21T09:37:52.0092071Z             },
2026-06-21T09:37:52.0092157Z             {
2026-06-21T09:37:52.0092265Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0092352Z               "line": 299
2026-06-21T09:37:52.0092433Z             },
2026-06-21T09:37:52.0092532Z             {
2026-06-21T09:37:52.0092646Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0092741Z               "line": 325
2026-06-21T09:37:52.0092833Z             },
2026-06-21T09:37:52.0092922Z             {
2026-06-21T09:37:52.0093042Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0093137Z               "line": 351
2026-06-21T09:37:52.0093223Z             }
2026-06-21T09:37:52.0093308Z           ]
2026-06-21T09:37:52.0093395Z         }
2026-06-21T09:37:52.0093476Z       }
2026-06-21T09:37:52.0093565Z     },
2026-06-21T09:37:52.0093642Z     {
2026-06-21T09:37:52.0093729Z       "id": "REQ-DAEMON-7",
2026-06-21T09:37:52.0095094Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T09:37:52.0095207Z       "requiredStages": [
2026-06-21T09:37:52.0095293Z         "impl",
2026-06-21T09:37:52.0095380Z         "unit"
2026-06-21T09:37:52.0095560Z       ],
2026-06-21T09:37:52.0095642Z       "stages": {
2026-06-21T09:37:52.0095728Z         "doc": {
2026-06-21T09:37:52.0095827Z           "complete": false,
2026-06-21T09:37:52.0095918Z           "evidence": []
2026-06-21T09:37:52.0095995Z         },
2026-06-21T09:37:52.0096085Z         "impl": {
2026-06-21T09:37:52.0096175Z           "complete": true,
2026-06-21T09:37:52.0096272Z           "evidence": [
2026-06-21T09:37:52.0096357Z             {
2026-06-21T09:37:52.0096485Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0096572Z               "line": 545
2026-06-21T09:37:52.0096657Z             },
2026-06-21T09:37:52.0103491Z             {
2026-06-21T09:37:52.0103816Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0103931Z               "line": 610
2026-06-21T09:37:52.0104017Z             },
2026-06-21T09:37:52.0104112Z             {
2026-06-21T09:37:52.0104241Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0104332Z               "line": 89
2026-06-21T09:37:52.0104422Z             },
2026-06-21T09:37:52.0104498Z             {
2026-06-21T09:37:52.0104609Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0104698Z               "line": 1957
2026-06-21T09:37:52.0104779Z             }
2026-06-21T09:37:52.0104866Z           ]
2026-06-21T09:37:52.0104952Z         },
2026-06-21T09:37:52.0105041Z         "int": {
2026-06-21T09:37:52.0105142Z           "complete": false,
2026-06-21T09:37:52.0105234Z           "evidence": []
2026-06-21T09:37:52.0105314Z         },
2026-06-21T09:37:52.0105403Z         "unit": {
2026-06-21T09:37:52.0105498Z           "complete": true,
2026-06-21T09:37:52.0105589Z           "evidence": [
2026-06-21T09:37:52.0105673Z             {
2026-06-21T09:37:52.0105796Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0105892Z               "line": 314
2026-06-21T09:37:52.0105979Z             },
2026-06-21T09:37:52.0106063Z             {
2026-06-21T09:37:52.0106178Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0106264Z               "line": 8102
2026-06-21T09:37:52.0106354Z             }
2026-06-21T09:37:52.0106435Z           ]
2026-06-21T09:37:52.0106527Z         }
2026-06-21T09:37:52.0106612Z       }
2026-06-21T09:37:52.0106697Z     },
2026-06-21T09:37:52.0106774Z     {
2026-06-21T09:37:52.0106866Z       "id": "REQ-DAEMON-8",
2026-06-21T09:37:52.0107861Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T09:37:52.0107966Z       "requiredStages": [
2026-06-21T09:37:52.0108058Z         "impl",
2026-06-21T09:37:52.0108144Z         "unit"
2026-06-21T09:37:52.0108223Z       ],
2026-06-21T09:37:52.0108304Z       "stages": {
2026-06-21T09:37:52.0108394Z         "doc": {
2026-06-21T09:37:52.0108494Z           "complete": false,
2026-06-21T09:37:52.0108578Z           "evidence": []
2026-06-21T09:37:52.0108658Z         },
2026-06-21T09:37:52.0108750Z         "impl": {
2026-06-21T09:37:52.0108836Z           "complete": true,
2026-06-21T09:37:52.0108926Z           "evidence": [
2026-06-21T09:37:52.0109093Z             {
2026-06-21T09:37:52.0109221Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0109331Z               "line": 445
2026-06-21T09:37:52.0109460Z             },
2026-06-21T09:37:52.0109546Z             {
2026-06-21T09:37:52.0109665Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0109761Z               "line": 56
2026-06-21T09:37:52.0109842Z             }
2026-06-21T09:37:52.0109927Z           ]
2026-06-21T09:37:52.0110004Z         },
2026-06-21T09:37:52.0110090Z         "int": {
2026-06-21T09:37:52.0110184Z           "complete": false,
2026-06-21T09:37:52.0110270Z           "evidence": []
2026-06-21T09:37:52.0110456Z         },
2026-06-21T09:37:52.0110543Z         "unit": {
2026-06-21T09:37:52.0110639Z           "complete": true,
2026-06-21T09:37:52.0110729Z           "evidence": [
2026-06-21T09:37:52.0110814Z             {
2026-06-21T09:37:52.0110942Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0111023Z               "line": 288
2026-06-21T09:37:52.0111102Z             },
2026-06-21T09:37:52.0111178Z             {
2026-06-21T09:37:52.0111297Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T09:37:52.0111379Z               "line": 325
2026-06-21T09:37:52.0111455Z             }
2026-06-21T09:37:52.0111544Z           ]
2026-06-21T09:37:52.0111722Z         }
2026-06-21T09:37:52.0111807Z       }
2026-06-21T09:37:52.0111883Z     },
2026-06-21T09:37:52.0111970Z     {
2026-06-21T09:37:52.0112056Z       "id": "REQ-DAEMON-9",
2026-06-21T09:37:52.0114357Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T09:37:52.0114477Z       "requiredStages": [
2026-06-21T09:37:52.0114563Z         "impl",
2026-06-21T09:37:52.0114649Z         "unit"
2026-06-21T09:37:52.0114738Z       ],
2026-06-21T09:37:52.0114825Z       "stages": {
2026-06-21T09:37:52.0114911Z         "doc": {
2026-06-21T09:37:52.0115001Z           "complete": false,
2026-06-21T09:37:52.0115096Z           "evidence": []
2026-06-21T09:37:52.0115183Z         },
2026-06-21T09:37:52.0115263Z         "impl": {
2026-06-21T09:37:52.0115358Z           "complete": true,
2026-06-21T09:37:52.0115446Z           "evidence": [
2026-06-21T09:37:52.0115526Z             {
2026-06-21T09:37:52.0115659Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0115745Z               "line": 276
2026-06-21T09:37:52.0115827Z             },
2026-06-21T09:37:52.0115907Z             {
2026-06-21T09:37:52.0116030Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0116120Z               "line": 1236
2026-06-21T09:37:52.0116220Z             },
2026-06-21T09:37:52.0116304Z             {
2026-06-21T09:37:52.0116419Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0116505Z               "line": 197
2026-06-21T09:37:52.0116590Z             },
2026-06-21T09:37:52.0116676Z             {
2026-06-21T09:37:52.0116777Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0116872Z               "line": 344
2026-06-21T09:37:52.0116957Z             },
2026-06-21T09:37:52.0117039Z             {
2026-06-21T09:37:52.0117153Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0117234Z               "line": 381
2026-06-21T09:37:52.0117324Z             },
2026-06-21T09:37:52.0117411Z             {
2026-06-21T09:37:52.0117506Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0117596Z               "line": 2075
2026-06-21T09:37:52.0117678Z             }
2026-06-21T09:37:52.0117764Z           ]
2026-06-21T09:37:52.0117850Z         },
2026-06-21T09:37:52.0117940Z         "int": {
2026-06-21T09:37:52.0118041Z           "complete": false,
2026-06-21T09:37:52.0118130Z           "evidence": []
2026-06-21T09:37:52.0118211Z         },
2026-06-21T09:37:52.0118293Z         "unit": {
2026-06-21T09:37:52.0118380Z           "complete": true,
2026-06-21T09:37:52.0118459Z           "evidence": [
2026-06-21T09:37:52.0118628Z             {
2026-06-21T09:37:52.0118742Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0118830Z               "line": 1158
2026-06-21T09:37:52.0118906Z             },
2026-06-21T09:37:52.0119054Z             {
2026-06-21T09:37:52.0119162Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0119242Z               "line": 10580
2026-06-21T09:37:52.0119353Z             }
2026-06-21T09:37:52.0119439Z           ]
2026-06-21T09:37:52.0119514Z         }
2026-06-21T09:37:52.0119601Z       }
2026-06-21T09:37:52.0119673Z     },
2026-06-21T09:37:52.0119758Z     {
2026-06-21T09:37:52.0119848Z       "id": "REQ-DOCS-1",
2026-06-21T09:37:52.0120144Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T09:37:52.0120245Z       "requiredStages": [
2026-06-21T09:37:52.0120326Z         "doc",
2026-06-21T09:37:52.0120421Z         "impl"
2026-06-21T09:37:52.0120506Z       ],
2026-06-21T09:37:52.0120603Z       "stages": {
2026-06-21T09:37:52.0120678Z         "doc": {
2026-06-21T09:37:52.0120764Z           "complete": true,
2026-06-21T09:37:52.0120860Z           "evidence": [
2026-06-21T09:37:52.0120942Z             {
2026-06-21T09:37:52.0121054Z               "path": "docs-site/src/index.md",
2026-06-21T09:37:52.0121141Z               "line": 50
2026-06-21T09:37:52.0121233Z             }
2026-06-21T09:37:52.0121317Z           ]
2026-06-21T09:37:52.0121397Z         },
2026-06-21T09:37:52.0121482Z         "impl": {
2026-06-21T09:37:52.0121569Z           "complete": true,
2026-06-21T09:37:52.0121658Z           "evidence": [
2026-06-21T09:37:52.0121738Z             {
2026-06-21T09:37:52.0121867Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T09:37:52.0121954Z               "line": 12
2026-06-21T09:37:52.0122039Z             },
2026-06-21T09:37:52.0122134Z             {
2026-06-21T09:37:52.0122230Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.0122334Z               "line": 14
2026-06-21T09:37:52.0122419Z             }
2026-06-21T09:37:52.0122502Z           ]
2026-06-21T09:37:52.0122582Z         },
2026-06-21T09:37:52.0122668Z         "int": {
2026-06-21T09:37:52.0122763Z           "complete": false,
2026-06-21T09:37:52.0122855Z           "evidence": []
2026-06-21T09:37:52.0122940Z         },
2026-06-21T09:37:52.0123025Z         "unit": {
2026-06-21T09:37:52.0123112Z           "complete": false,
2026-06-21T09:37:52.0123198Z           "evidence": []
2026-06-21T09:37:52.0123278Z         }
2026-06-21T09:37:52.0123364Z       }
2026-06-21T09:37:52.0123451Z     },
2026-06-21T09:37:52.0123541Z     {
2026-06-21T09:37:52.0123631Z       "id": "REQ-DOCS-2",
2026-06-21T09:37:52.0123799Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T09:37:52.0123888Z       "requiredStages": [
2026-06-21T09:37:52.0123975Z         "doc",
2026-06-21T09:37:52.0124061Z         "int"
2026-06-21T09:37:52.0124142Z       ],
2026-06-21T09:37:52.0124222Z       "stages": {
2026-06-21T09:37:52.0124307Z         "doc": {
2026-06-21T09:37:52.0124397Z           "complete": true,
2026-06-21T09:37:52.0124485Z           "evidence": [
2026-06-21T09:37:52.0124565Z             {
2026-06-21T09:37:52.0124732Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T09:37:52.0124828Z               "line": 3
2026-06-21T09:37:52.0124913Z             },
2026-06-21T09:37:52.0124993Z             {
2026-06-21T09:37:52.0125128Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T09:37:52.0125209Z               "line": 3
2026-06-21T09:37:52.0125293Z             },
2026-06-21T09:37:52.0125381Z             {
2026-06-21T09:37:52.0125513Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T09:37:52.0125594Z               "line": 3
2026-06-21T09:37:52.0125676Z             }
2026-06-21T09:37:52.0125757Z           ]
2026-06-21T09:37:52.0125837Z         },
2026-06-21T09:37:52.0125928Z         "impl": {
2026-06-21T09:37:52.0126020Z           "complete": false,
2026-06-21T09:37:52.0126219Z           "evidence": []
2026-06-21T09:37:52.0126301Z         },
2026-06-21T09:37:52.0126378Z         "int": {
2026-06-21T09:37:52.0126477Z           "complete": true,
2026-06-21T09:37:52.0126557Z           "evidence": [
2026-06-21T09:37:52.0126633Z             {
2026-06-21T09:37:52.0126756Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:37:52.0126845Z               "line": 14
2026-06-21T09:37:52.0126926Z             }
2026-06-21T09:37:52.0127012Z           ]
2026-06-21T09:37:52.0127099Z         },
2026-06-21T09:37:52.0127183Z         "unit": {
2026-06-21T09:37:52.0127274Z           "complete": false,
2026-06-21T09:37:52.0127446Z           "evidence": []
2026-06-21T09:37:52.0127527Z         }
2026-06-21T09:37:52.0127614Z       }
2026-06-21T09:37:52.0127695Z     },
2026-06-21T09:37:52.0127780Z     {
2026-06-21T09:37:52.0127865Z       "id": "REQ-DOCS-3",
2026-06-21T09:37:52.0128066Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T09:37:52.0128175Z       "requiredStages": [
2026-06-21T09:37:52.0128258Z         "doc"
2026-06-21T09:37:52.0128348Z       ],
2026-06-21T09:37:52.0128433Z       "stages": {
2026-06-21T09:37:52.0128519Z         "doc": {
2026-06-21T09:37:52.0128606Z           "complete": true,
2026-06-21T09:37:52.0128691Z           "evidence": [
2026-06-21T09:37:52.0128772Z             {
2026-06-21T09:37:52.0128887Z               "path": "docs-site/src/index.md",
2026-06-21T09:37:52.0129047Z               "line": 42
2026-06-21T09:37:52.0129129Z             }
2026-06-21T09:37:52.0129216Z           ]
2026-06-21T09:37:52.0129293Z         },
2026-06-21T09:37:52.0129405Z         "impl": {
2026-06-21T09:37:52.0129505Z           "complete": false,
2026-06-21T09:37:52.0129596Z           "evidence": []
2026-06-21T09:37:52.0129675Z         },
2026-06-21T09:37:52.0129760Z         "int": {
2026-06-21T09:37:52.0129856Z           "complete": false,
2026-06-21T09:37:52.0129937Z           "evidence": []
2026-06-21T09:37:52.0130032Z         },
2026-06-21T09:37:52.0130117Z         "unit": {
2026-06-21T09:37:52.0130209Z           "complete": false,
2026-06-21T09:37:52.0130305Z           "evidence": []
2026-06-21T09:37:52.0130379Z         }
2026-06-21T09:37:52.0130466Z       }
2026-06-21T09:37:52.0130543Z     },
2026-06-21T09:37:52.0130629Z     {
2026-06-21T09:37:52.0130713Z       "id": "REQ-DOCS-4",
2026-06-21T09:37:52.0130909Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T09:37:52.0131004Z       "requiredStages": [
2026-06-21T09:37:52.0131085Z         "doc",
2026-06-21T09:37:52.0131168Z         "impl",
2026-06-21T09:37:52.0131252Z         "unit"
2026-06-21T09:37:52.0131343Z       ],
2026-06-21T09:37:52.0131425Z       "stages": {
2026-06-21T09:37:52.0131511Z         "doc": {
2026-06-21T09:37:52.0131590Z           "complete": true,
2026-06-21T09:37:52.0131677Z           "evidence": [
2026-06-21T09:37:52.0131759Z             {
2026-06-21T09:37:52.0131868Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T09:37:52.0131962Z               "line": 35
2026-06-21T09:37:52.0132033Z             }
2026-06-21T09:37:52.0132110Z           ]
2026-06-21T09:37:52.0132195Z         },
2026-06-21T09:37:52.0132279Z         "impl": {
2026-06-21T09:37:52.0132374Z           "complete": true,
2026-06-21T09:37:52.0132451Z           "evidence": [
2026-06-21T09:37:52.0132537Z             {
2026-06-21T09:37:52.0132660Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.0132747Z               "line": 746
2026-06-21T09:37:52.0132828Z             },
2026-06-21T09:37:52.0132908Z             {
2026-06-21T09:37:52.0133018Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.0133105Z               "line": 15
2026-06-21T09:37:52.0133190Z             }
2026-06-21T09:37:52.0133261Z           ]
2026-06-21T09:37:52.0133348Z         },
2026-06-21T09:37:52.0133420Z         "int": {
2026-06-21T09:37:52.0133509Z           "complete": false,
2026-06-21T09:37:52.0133696Z           "evidence": []
2026-06-21T09:37:52.0133772Z         },
2026-06-21T09:37:52.0133862Z         "unit": {
2026-06-21T09:37:52.0133948Z           "complete": true,
2026-06-21T09:37:52.0134035Z           "evidence": [
2026-06-21T09:37:52.0134119Z             {
2026-06-21T09:37:52.0134239Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.0134316Z               "line": 1682
2026-06-21T09:37:52.0134402Z             }
2026-06-21T09:37:52.0134486Z           ]
2026-06-21T09:37:52.0134573Z         }
2026-06-21T09:37:52.0134655Z       }
2026-06-21T09:37:52.0134740Z     },
2026-06-21T09:37:52.0134820Z     {
2026-06-21T09:37:52.0134905Z       "id": "REQ-DOCS-5",
2026-06-21T09:37:52.0135191Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T09:37:52.0135292Z       "requiredStages": [
2026-06-21T09:37:52.0135374Z         "impl",
2026-06-21T09:37:52.0135463Z         "int"
2026-06-21T09:37:52.0135548Z       ],
2026-06-21T09:37:52.0135636Z       "stages": {
2026-06-21T09:37:52.0135717Z         "doc": {
2026-06-21T09:37:52.0135797Z           "complete": false,
2026-06-21T09:37:52.0135888Z           "evidence": []
2026-06-21T09:37:52.0135969Z         },
2026-06-21T09:37:52.0136050Z         "impl": {
2026-06-21T09:37:52.0136145Z           "complete": true,
2026-06-21T09:37:52.0136231Z           "evidence": [
2026-06-21T09:37:52.0136317Z             {
2026-06-21T09:37:52.0136436Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.0136527Z               "line": 747
2026-06-21T09:37:52.0136613Z             },
2026-06-21T09:37:52.0136698Z             {
2026-06-21T09:37:52.0136808Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.0136895Z               "line": 113
2026-06-21T09:37:52.0136975Z             }
2026-06-21T09:37:52.0137056Z           ]
2026-06-21T09:37:52.0137136Z         },
2026-06-21T09:37:52.0137222Z         "int": {
2026-06-21T09:37:52.0137312Z           "complete": true,
2026-06-21T09:37:52.0137405Z           "evidence": [
2026-06-21T09:37:52.0137486Z             {
2026-06-21T09:37:52.0137592Z               "path": ".github/workflows/ci.yml",
2026-06-21T09:37:52.0137677Z               "line": 208
2026-06-21T09:37:52.0137772Z             },
2026-06-21T09:37:52.0137849Z             {
2026-06-21T09:37:52.0137973Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.0138077Z               "line": 1719
2026-06-21T09:37:52.0138159Z             }
2026-06-21T09:37:52.0138241Z           ]
2026-06-21T09:37:52.0138321Z         },
2026-06-21T09:37:52.0138397Z         "unit": {
2026-06-21T09:37:52.0138484Z           "complete": false,
2026-06-21T09:37:52.0138589Z           "evidence": []
2026-06-21T09:37:52.0138679Z         }
2026-06-21T09:37:52.0138750Z       }
2026-06-21T09:37:52.0138832Z     },
2026-06-21T09:37:52.0138903Z     {
2026-06-21T09:37:52.0139060Z       "id": "REQ-DOCS-6",
2026-06-21T09:37:52.0139384Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T09:37:52.0139495Z       "requiredStages": [
2026-06-21T09:37:52.0139594Z         "impl",
2026-06-21T09:37:52.0139666Z         "unit",
2026-06-21T09:37:52.0139752Z         "int"
2026-06-21T09:37:52.0139834Z       ],
2026-06-21T09:37:52.0139923Z       "stages": {
2026-06-21T09:37:52.0140003Z         "doc": {
2026-06-21T09:37:52.0140094Z           "complete": true,
2026-06-21T09:37:52.0140188Z           "evidence": [
2026-06-21T09:37:52.0140272Z             {
2026-06-21T09:37:52.0140406Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T09:37:52.0140497Z               "line": 4
2026-06-21T09:37:52.0140587Z             }
2026-06-21T09:37:52.0140663Z           ]
2026-06-21T09:37:52.0140750Z         },
2026-06-21T09:37:52.0140831Z         "impl": {
2026-06-21T09:37:52.0140916Z           "complete": true,
2026-06-21T09:37:52.0141011Z           "evidence": [
2026-06-21T09:37:52.0141089Z             {
2026-06-21T09:37:52.0141292Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0141379Z               "line": 5240
2026-06-21T09:37:52.0141465Z             }
2026-06-21T09:37:52.0141551Z           ]
2026-06-21T09:37:52.0141636Z         },
2026-06-21T09:37:52.0141718Z         "int": {
2026-06-21T09:37:52.0141799Z           "complete": true,
2026-06-21T09:37:52.0141894Z           "evidence": [
2026-06-21T09:37:52.0141975Z             {
2026-06-21T09:37:52.0142100Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:37:52.0142189Z               "line": 39
2026-06-21T09:37:52.0142271Z             }
2026-06-21T09:37:52.0142358Z           ]
2026-06-21T09:37:52.0142527Z         },
2026-06-21T09:37:52.0142607Z         "unit": {
2026-06-21T09:37:52.0142689Z           "complete": true,
2026-06-21T09:37:52.0142787Z           "evidence": [
2026-06-21T09:37:52.0142872Z             {
2026-06-21T09:37:52.0142973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0143074Z               "line": 10742
2026-06-21T09:37:52.0143163Z             }
2026-06-21T09:37:52.0143244Z           ]
2026-06-21T09:37:52.0143327Z         }
2026-06-21T09:37:52.0143417Z       }
2026-06-21T09:37:52.0143506Z     },
2026-06-21T09:37:52.0143588Z     {
2026-06-21T09:37:52.0143684Z       "id": "REQ-ELEVATE-1",
2026-06-21T09:37:52.0146734Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T09:37:52.0146859Z       "requiredStages": [
2026-06-21T09:37:52.0146953Z         "doc",
2026-06-21T09:37:52.0147039Z         "impl",
2026-06-21T09:37:52.0147126Z         "unit"
2026-06-21T09:37:52.0147211Z       ],
2026-06-21T09:37:52.0147301Z       "stages": {
2026-06-21T09:37:52.0147387Z         "doc": {
2026-06-21T09:37:52.0147484Z           "complete": true,
2026-06-21T09:37:52.0147573Z           "evidence": [
2026-06-21T09:37:52.0147658Z             {
2026-06-21T09:37:52.0147758Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.0147844Z               "line": 687
2026-06-21T09:37:52.0147923Z             }
2026-06-21T09:37:52.0148013Z           ]
2026-06-21T09:37:52.0148099Z         },
2026-06-21T09:37:52.0148186Z         "impl": {
2026-06-21T09:37:52.0148271Z           "complete": true,
2026-06-21T09:37:52.0148366Z           "evidence": [
2026-06-21T09:37:52.0148448Z             {
2026-06-21T09:37:52.0148543Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0148642Z               "line": 3572
2026-06-21T09:37:52.0148729Z             },
2026-06-21T09:37:52.0148824Z             {
2026-06-21T09:37:52.0148929Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0149091Z               "line": 3617
2026-06-21T09:37:52.0149186Z             },
2026-06-21T09:37:52.0149267Z             {
2026-06-21T09:37:52.0149388Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0149496Z               "line": 3679
2026-06-21T09:37:52.0149592Z             },
2026-06-21T09:37:52.0149698Z             {
2026-06-21T09:37:52.0149806Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0149897Z               "line": 92
2026-06-21T09:37:52.0150079Z             },
2026-06-21T09:37:52.0150164Z             {
2026-06-21T09:37:52.0150269Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0150360Z               "line": 148
2026-06-21T09:37:52.0150441Z             }
2026-06-21T09:37:52.0150511Z           ]
2026-06-21T09:37:52.0150596Z         },
2026-06-21T09:37:52.0150673Z         "int": {
2026-06-21T09:37:52.0150772Z           "complete": false,
2026-06-21T09:37:52.0150856Z           "evidence": []
2026-06-21T09:37:52.0150942Z         },
2026-06-21T09:37:52.0151029Z         "unit": {
2026-06-21T09:37:52.0151124Z           "complete": true,
2026-06-21T09:37:52.0151320Z           "evidence": [
2026-06-21T09:37:52.0151472Z             {
2026-06-21T09:37:52.0151576Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0151663Z               "line": 442
2026-06-21T09:37:52.0151754Z             },
2026-06-21T09:37:52.0151843Z             {
2026-06-21T09:37:52.0151945Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0152044Z               "line": 460
2026-06-21T09:37:52.0152130Z             }
2026-06-21T09:37:52.0152216Z           ]
2026-06-21T09:37:52.0152293Z         }
2026-06-21T09:37:52.0152378Z       }
2026-06-21T09:37:52.0152459Z     },
2026-06-21T09:37:52.0152540Z     {
2026-06-21T09:37:52.0152655Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T09:37:52.0154376Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T09:37:52.0154492Z       "requiredStages": [
2026-06-21T09:37:52.0154578Z         "doc",
2026-06-21T09:37:52.0154663Z         "impl",
2026-06-21T09:37:52.0154754Z         "unit"
2026-06-21T09:37:52.0154836Z       ],
2026-06-21T09:37:52.0154920Z       "stages": {
2026-06-21T09:37:52.0154997Z         "doc": {
2026-06-21T09:37:52.0155087Z           "complete": true,
2026-06-21T09:37:52.0155184Z           "evidence": [
2026-06-21T09:37:52.0155268Z             {
2026-06-21T09:37:52.0155369Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.0155455Z               "line": 711
2026-06-21T09:37:52.0155546Z             }
2026-06-21T09:37:52.0155636Z           ]
2026-06-21T09:37:52.0155722Z         },
2026-06-21T09:37:52.0155833Z         "impl": {
2026-06-21T09:37:52.0155916Z           "complete": true,
2026-06-21T09:37:52.0156016Z           "evidence": [
2026-06-21T09:37:52.0156092Z             {
2026-06-21T09:37:52.0156208Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0156302Z               "line": 1721
2026-06-21T09:37:52.0156398Z             },
2026-06-21T09:37:52.0156484Z             {
2026-06-21T09:37:52.0156588Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0156683Z               "line": 3125
2026-06-21T09:37:52.0156766Z             },
2026-06-21T09:37:52.0156856Z             {
2026-06-21T09:37:52.0156955Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0157051Z               "line": 3134
2026-06-21T09:37:52.0157137Z             }
2026-06-21T09:37:52.0157213Z           ]
2026-06-21T09:37:52.0157304Z         },
2026-06-21T09:37:52.0157386Z         "int": {
2026-06-21T09:37:52.0157494Z           "complete": false,
2026-06-21T09:37:52.0157580Z           "evidence": []
2026-06-21T09:37:52.0157667Z         },
2026-06-21T09:37:52.0157757Z         "unit": {
2026-06-21T09:37:52.0157842Z           "complete": true,
2026-06-21T09:37:52.0157928Z           "evidence": [
2026-06-21T09:37:52.0158010Z             {
2026-06-21T09:37:52.0158223Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0158323Z               "line": 7950
2026-06-21T09:37:52.0158404Z             },
2026-06-21T09:37:52.0158492Z             {
2026-06-21T09:37:52.0158587Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0158674Z               "line": 7991
2026-06-21T09:37:52.0158756Z             }
2026-06-21T09:37:52.0158845Z           ]
2026-06-21T09:37:52.0158941Z         }
2026-06-21T09:37:52.0159089Z       }
2026-06-21T09:37:52.0159179Z     },
2026-06-21T09:37:52.0159265Z     {
2026-06-21T09:37:52.0159413Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T09:37:52.0164093Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T09:37:52.0164336Z       "requiredStages": [
2026-06-21T09:37:52.0164423Z         "doc",
2026-06-21T09:37:52.0164508Z         "impl",
2026-06-21T09:37:52.0164589Z         "unit",
2026-06-21T09:37:52.0164675Z         "int"
2026-06-21T09:37:52.0164766Z       ],
2026-06-21T09:37:52.0164851Z       "stages": {
2026-06-21T09:37:52.0164941Z         "doc": {
2026-06-21T09:37:52.0165043Z           "complete": true,
2026-06-21T09:37:52.0165242Z           "evidence": [
2026-06-21T09:37:52.0165328Z             {
2026-06-21T09:37:52.0165429Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.0165509Z               "line": 163
2026-06-21T09:37:52.0165595Z             }
2026-06-21T09:37:52.0165677Z           ]
2026-06-21T09:37:52.0165758Z         },
2026-06-21T09:37:52.0165838Z         "impl": {
2026-06-21T09:37:52.0165938Z           "complete": true,
2026-06-21T09:37:52.0166030Z           "evidence": [
2026-06-21T09:37:52.0166120Z             {
2026-06-21T09:37:52.0166248Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.0166345Z               "line": 105
2026-06-21T09:37:52.0166426Z             },
2026-06-21T09:37:52.0166505Z             {
2026-06-21T09:37:52.0166614Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0166701Z               "line": 7219
2026-06-21T09:37:52.0166783Z             }
2026-06-21T09:37:52.0166867Z           ]
2026-06-21T09:37:52.0166958Z         },
2026-06-21T09:37:52.0167040Z         "int": {
2026-06-21T09:37:52.0167139Z           "complete": true,
2026-06-21T09:37:52.0167229Z           "evidence": [
2026-06-21T09:37:52.0167307Z             {
2026-06-21T09:37:52.0167416Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0167501Z               "line": 7384
2026-06-21T09:37:52.0167597Z             }
2026-06-21T09:37:52.0167674Z           ]
2026-06-21T09:37:52.0167859Z         },
2026-06-21T09:37:52.0167950Z         "unit": {
2026-06-21T09:37:52.0168045Z           "complete": true,
2026-06-21T09:37:52.0168140Z           "evidence": [
2026-06-21T09:37:52.0168222Z             {
2026-06-21T09:37:52.0168327Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0168431Z               "line": 7355
2026-06-21T09:37:52.0168508Z             }
2026-06-21T09:37:52.0168590Z           ]
2026-06-21T09:37:52.0168675Z         }
2026-06-21T09:37:52.0168764Z       }
2026-06-21T09:37:52.0168844Z     },
2026-06-21T09:37:52.0168926Z     {
2026-06-21T09:37:52.0169124Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T09:37:52.0170503Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T09:37:52.0170616Z       "requiredStages": [
2026-06-21T09:37:52.0170697Z         "impl",
2026-06-21T09:37:52.0170784Z         "unit"
2026-06-21T09:37:52.0170865Z       ],
2026-06-21T09:37:52.0170945Z       "stages": {
2026-06-21T09:37:52.0171026Z         "doc": {
2026-06-21T09:37:52.0171123Z           "complete": false,
2026-06-21T09:37:52.0171213Z           "evidence": []
2026-06-21T09:37:52.0171298Z         },
2026-06-21T09:37:52.0171389Z         "impl": {
2026-06-21T09:37:52.0171486Z           "complete": true,
2026-06-21T09:37:52.0171584Z           "evidence": [
2026-06-21T09:37:52.0171669Z             {
2026-06-21T09:37:52.0171764Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0171854Z               "line": 3165
2026-06-21T09:37:52.0171944Z             }
2026-06-21T09:37:52.0172033Z           ]
2026-06-21T09:37:52.0172120Z         },
2026-06-21T09:37:52.0172211Z         "int": {
2026-06-21T09:37:52.0172315Z           "complete": false,
2026-06-21T09:37:52.0172401Z           "evidence": []
2026-06-21T09:37:52.0172488Z         },
2026-06-21T09:37:52.0172568Z         "unit": {
2026-06-21T09:37:52.0172658Z           "complete": true,
2026-06-21T09:37:52.0172751Z           "evidence": [
2026-06-21T09:37:52.0172836Z             {
2026-06-21T09:37:52.0172930Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0173026Z               "line": 7331
2026-06-21T09:37:52.0173107Z             }
2026-06-21T09:37:52.0173193Z           ]
2026-06-21T09:37:52.0173274Z         }
2026-06-21T09:37:52.0173360Z       }
2026-06-21T09:37:52.0173441Z     },
2026-06-21T09:37:52.0173531Z     {
2026-06-21T09:37:52.0173622Z       "id": "REQ-EP-1",
2026-06-21T09:37:52.0173756Z       "title": "Day-one endpoint types; open type system",
2026-06-21T09:37:52.0173851Z       "requiredStages": [
2026-06-21T09:37:52.0173941Z         "impl",
2026-06-21T09:37:52.0174029Z         "unit"
2026-06-21T09:37:52.0174118Z       ],
2026-06-21T09:37:52.0174207Z       "stages": {
2026-06-21T09:37:52.0174283Z         "doc": {
2026-06-21T09:37:52.0174379Z           "complete": false,
2026-06-21T09:37:52.0174463Z           "evidence": []
2026-06-21T09:37:52.0174552Z         },
2026-06-21T09:37:52.0174639Z         "impl": {
2026-06-21T09:37:52.0174726Z           "complete": true,
2026-06-21T09:37:52.0174816Z           "evidence": [
2026-06-21T09:37:52.0174901Z             {
2026-06-21T09:37:52.0175031Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0175117Z               "line": 77
2026-06-21T09:37:52.0175196Z             },
2026-06-21T09:37:52.0175293Z             {
2026-06-21T09:37:52.0175402Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0175497Z               "line": 94
2026-06-21T09:37:52.0175578Z             }
2026-06-21T09:37:52.0175665Z           ]
2026-06-21T09:37:52.0175740Z         },
2026-06-21T09:37:52.0175826Z         "int": {
2026-06-21T09:37:52.0176032Z           "complete": false,
2026-06-21T09:37:52.0176122Z           "evidence": []
2026-06-21T09:37:52.0176203Z         },
2026-06-21T09:37:52.0176285Z         "unit": {
2026-06-21T09:37:52.0176384Z           "complete": true,
2026-06-21T09:37:52.0176475Z           "evidence": [
2026-06-21T09:37:52.0176562Z             {
2026-06-21T09:37:52.0176689Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0176780Z               "line": 161
2026-06-21T09:37:52.0176877Z             },
2026-06-21T09:37:52.0176958Z             {
2026-06-21T09:37:52.0177079Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0177256Z               "line": 178
2026-06-21T09:37:52.0177343Z             }
2026-06-21T09:37:52.0177432Z           ]
2026-06-21T09:37:52.0177508Z         }
2026-06-21T09:37:52.0177595Z       }
2026-06-21T09:37:52.0177667Z     },
2026-06-21T09:37:52.0177751Z     {
2026-06-21T09:37:52.0177843Z       "id": "REQ-EP-2",
2026-06-21T09:37:52.0178029Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T09:37:52.0178128Z       "requiredStages": [
2026-06-21T09:37:52.0178215Z         "impl",
2026-06-21T09:37:52.0178304Z         "unit"
2026-06-21T09:37:52.0178385Z       ],
2026-06-21T09:37:52.0178477Z       "stages": {
2026-06-21T09:37:52.0178554Z         "doc": {
2026-06-21T09:37:52.0178658Z           "complete": false,
2026-06-21T09:37:52.0178753Z           "evidence": []
2026-06-21T09:37:52.0178835Z         },
2026-06-21T09:37:52.0182177Z         "impl": {
2026-06-21T09:37:52.0182291Z           "complete": true,
2026-06-21T09:37:52.0182401Z           "evidence": [
2026-06-21T09:37:52.0182499Z             {
2026-06-21T09:37:52.0182642Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0182733Z               "line": 114
2026-06-21T09:37:52.0182818Z             },
2026-06-21T09:37:52.0182899Z             {
2026-06-21T09:37:52.0183024Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0183128Z               "line": 131
2026-06-21T09:37:52.0183204Z             },
2026-06-21T09:37:52.0183286Z             {
2026-06-21T09:37:52.0183405Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0183495Z               "line": 138
2026-06-21T09:37:52.0183586Z             }
2026-06-21T09:37:52.0183663Z           ]
2026-06-21T09:37:52.0183748Z         },
2026-06-21T09:37:52.0183829Z         "int": {
2026-06-21T09:37:52.0183935Z           "complete": false,
2026-06-21T09:37:52.0184030Z           "evidence": []
2026-06-21T09:37:52.0184105Z         },
2026-06-21T09:37:52.0184186Z         "unit": {
2026-06-21T09:37:52.0184288Z           "complete": true,
2026-06-21T09:37:52.0184377Z           "evidence": [
2026-06-21T09:37:52.0184449Z             {
2026-06-21T09:37:52.0184574Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0184664Z               "line": 190
2026-06-21T09:37:52.0184749Z             },
2026-06-21T09:37:52.0184843Z             {
2026-06-21T09:37:52.0184953Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0185033Z               "line": 208
2026-06-21T09:37:52.0185108Z             },
2026-06-21T09:37:52.0185189Z             {
2026-06-21T09:37:52.0185314Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T09:37:52.0185400Z               "line": 221
2026-06-21T09:37:52.0185485Z             }
2026-06-21T09:37:52.0185562Z           ]
2026-06-21T09:37:52.0185652Z         }
2026-06-21T09:37:52.0185733Z       }
2026-06-21T09:37:52.0185814Z     },
2026-06-21T09:37:52.0185901Z     {
2026-06-21T09:37:52.0185991Z       "id": "REQ-EP-3",
2026-06-21T09:37:52.0186192Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T09:37:52.0186286Z       "requiredStages": [
2026-06-21T09:37:52.0186372Z         "impl",
2026-06-21T09:37:52.0186448Z         "unit"
2026-06-21T09:37:52.0186535Z       ],
2026-06-21T09:37:52.0186615Z       "stages": {
2026-06-21T09:37:52.0186831Z         "doc": {
2026-06-21T09:37:52.0186930Z           "complete": false,
2026-06-21T09:37:52.0187016Z           "evidence": []
2026-06-21T09:37:52.0187098Z         },
2026-06-21T09:37:52.0187179Z         "impl": {
2026-06-21T09:37:52.0187278Z           "complete": true,
2026-06-21T09:37:52.0187369Z           "evidence": [
2026-06-21T09:37:52.0187451Z             {
2026-06-21T09:37:52.0187578Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0187658Z               "line": 31
2026-06-21T09:37:52.0187744Z             },
2026-06-21T09:37:52.0187821Z             {
2026-06-21T09:37:52.0187950Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0188160Z               "line": 49
2026-06-21T09:37:52.0188236Z             }
2026-06-21T09:37:52.0188321Z           ]
2026-06-21T09:37:52.0188403Z         },
2026-06-21T09:37:52.0188489Z         "int": {
2026-06-21T09:37:52.0188584Z           "complete": false,
2026-06-21T09:37:52.0188669Z           "evidence": []
2026-06-21T09:37:52.0188761Z         },
2026-06-21T09:37:52.0188841Z         "unit": {
2026-06-21T09:37:52.0189022Z           "complete": true,
2026-06-21T09:37:52.0189109Z           "evidence": [
2026-06-21T09:37:52.0189184Z             {
2026-06-21T09:37:52.0189294Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0189386Z               "line": 156
2026-06-21T09:37:52.0189499Z             },
2026-06-21T09:37:52.0189576Z             {
2026-06-21T09:37:52.0189686Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0189767Z               "line": 164
2026-06-21T09:37:52.0189856Z             },
2026-06-21T09:37:52.0189937Z             {
2026-06-21T09:37:52.0190051Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0190136Z               "line": 177
2026-06-21T09:37:52.0190216Z             },
2026-06-21T09:37:52.0190301Z             {
2026-06-21T09:37:52.0190407Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0190507Z               "line": 200
2026-06-21T09:37:52.0190583Z             },
2026-06-21T09:37:52.0190664Z             {
2026-06-21T09:37:52.0190784Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0190868Z               "line": 216
2026-06-21T09:37:52.0190955Z             },
2026-06-21T09:37:52.0191037Z             {
2026-06-21T09:37:52.0191155Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T09:37:52.0191241Z               "line": 233
2026-06-21T09:37:52.0191323Z             }
2026-06-21T09:37:52.0191417Z           ]
2026-06-21T09:37:52.0191498Z         }
2026-06-21T09:37:52.0191579Z       }
2026-06-21T09:37:52.0191661Z     },
2026-06-21T09:37:52.0191746Z     {
2026-06-21T09:37:52.0191832Z       "id": "REQ-EP-4",
2026-06-21T09:37:52.0191986Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T09:37:52.0192070Z       "requiredStages": [
2026-06-21T09:37:52.0192156Z         "impl",
2026-06-21T09:37:52.0192243Z         "unit"
2026-06-21T09:37:52.0192325Z       ],
2026-06-21T09:37:52.0192408Z       "stages": {
2026-06-21T09:37:52.0192490Z         "doc": {
2026-06-21T09:37:52.0192572Z           "complete": false,
2026-06-21T09:37:52.0192667Z           "evidence": []
2026-06-21T09:37:52.0192747Z         },
2026-06-21T09:37:52.0192827Z         "impl": {
2026-06-21T09:37:52.0192913Z           "complete": true,
2026-06-21T09:37:52.0193008Z           "evidence": [
2026-06-21T09:37:52.0193088Z             {
2026-06-21T09:37:52.0193212Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0193303Z               "line": 764
2026-06-21T09:37:52.0193383Z             },
2026-06-21T09:37:52.0193473Z             {
2026-06-21T09:37:52.0193584Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0193675Z               "line": 1127
2026-06-21T09:37:52.0193760Z             },
2026-06-21T09:37:52.0193841Z             {
2026-06-21T09:37:52.0193960Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0194142Z               "line": 2310
2026-06-21T09:37:52.0194228Z             },
2026-06-21T09:37:52.0194299Z             {
2026-06-21T09:37:52.0194413Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0194500Z               "line": 118
2026-06-21T09:37:52.0194585Z             },
2026-06-21T09:37:52.0194666Z             {
2026-06-21T09:37:52.0194766Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0194853Z               "line": 699
2026-06-21T09:37:52.0194933Z             },
2026-06-21T09:37:52.0195014Z             {
2026-06-21T09:37:52.0195129Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0195314Z               "line": 836
2026-06-21T09:37:52.0195399Z             },
2026-06-21T09:37:52.0195476Z             {
2026-06-21T09:37:52.0195597Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0195678Z               "line": 321
2026-06-21T09:37:52.0195764Z             },
2026-06-21T09:37:52.0195855Z             {
2026-06-21T09:37:52.0195969Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0196060Z               "line": 508
2026-06-21T09:37:52.0196141Z             },
2026-06-21T09:37:52.0196232Z             {
2026-06-21T09:37:52.0196340Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0196433Z               "line": 1334
2026-06-21T09:37:52.0196527Z             }
2026-06-21T09:37:52.0196598Z           ]
2026-06-21T09:37:52.0196684Z         },
2026-06-21T09:37:52.0196766Z         "int": {
2026-06-21T09:37:52.0196861Z           "complete": false,
2026-06-21T09:37:52.0196941Z           "evidence": []
2026-06-21T09:37:52.0197033Z         },
2026-06-21T09:37:52.0197114Z         "unit": {
2026-06-21T09:37:52.0197209Z           "complete": true,
2026-06-21T09:37:52.0197299Z           "evidence": [
2026-06-21T09:37:52.0197377Z             {
2026-06-21T09:37:52.0197490Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0197567Z               "line": 927
2026-06-21T09:37:52.0197653Z             },
2026-06-21T09:37:52.0197734Z             {
2026-06-21T09:37:52.0197857Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T09:37:52.0197948Z               "line": 76
2026-06-21T09:37:52.0198031Z             },
2026-06-21T09:37:52.0198115Z             {
2026-06-21T09:37:52.0198237Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T09:37:52.0198328Z               "line": 147
2026-06-21T09:37:52.0198410Z             }
2026-06-21T09:37:52.0198491Z           ]
2026-06-21T09:37:52.0198580Z         }
2026-06-21T09:37:52.0198663Z       }
2026-06-21T09:37:52.0198753Z     },
2026-06-21T09:37:52.0198824Z     {
2026-06-21T09:37:52.0198909Z       "id": "REQ-EP-5",
2026-06-21T09:37:52.0199627Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T09:37:52.0199730Z       "requiredStages": [
2026-06-21T09:37:52.0199811Z         "impl",
2026-06-21T09:37:52.0199883Z         "unit",
2026-06-21T09:37:52.0199969Z         "int"
2026-06-21T09:37:52.0200059Z       ],
2026-06-21T09:37:52.0200136Z       "stages": {
2026-06-21T09:37:52.0200217Z         "doc": {
2026-06-21T09:37:52.0200308Z           "complete": false,
2026-06-21T09:37:52.0200393Z           "evidence": []
2026-06-21T09:37:52.0200473Z         },
2026-06-21T09:37:52.0200554Z         "impl": {
2026-06-21T09:37:52.0200649Z           "complete": true,
2026-06-21T09:37:52.0200738Z           "evidence": [
2026-06-21T09:37:52.0200823Z             {
2026-06-21T09:37:52.0200953Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0201034Z               "line": 367
2026-06-21T09:37:52.0201119Z             },
2026-06-21T09:37:52.0201195Z             {
2026-06-21T09:37:52.0201324Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0201515Z               "line": 18
2026-06-21T09:37:52.0201597Z             },
2026-06-21T09:37:52.0201687Z             {
2026-06-21T09:37:52.0201806Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0201888Z               "line": 63
2026-06-21T09:37:52.0201973Z             },
2026-06-21T09:37:52.0202054Z             {
2026-06-21T09:37:52.0202164Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0202250Z               "line": 92
2026-06-21T09:37:52.0202336Z             },
2026-06-21T09:37:52.0202421Z             {
2026-06-21T09:37:52.0202532Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0202716Z               "line": 167
2026-06-21T09:37:52.0202809Z             },
2026-06-21T09:37:52.0202889Z             {
2026-06-21T09:37:52.0203008Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0203084Z               "line": 179
2026-06-21T09:37:52.0203180Z             },
2026-06-21T09:37:52.0203260Z             {
2026-06-21T09:37:52.0203383Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0203473Z               "line": 114
2026-06-21T09:37:52.0203545Z             },
2026-06-21T09:37:52.0203628Z             {
2026-06-21T09:37:52.0203748Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0203839Z               "line": 22
2026-06-21T09:37:52.0203920Z             },
2026-06-21T09:37:52.0204000Z             {
2026-06-21T09:37:52.0204116Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0204196Z               "line": 145
2026-06-21T09:37:52.0204291Z             },
2026-06-21T09:37:52.0204372Z             {
2026-06-21T09:37:52.0204492Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0204583Z               "line": 174
2026-06-21T09:37:52.0204658Z             },
2026-06-21T09:37:52.0204745Z             {
2026-06-21T09:37:52.0204868Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0204968Z               "line": 196
2026-06-21T09:37:52.0205050Z             },
2026-06-21T09:37:52.0205141Z             {
2026-06-21T09:37:52.0205254Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0205336Z               "line": 221
2026-06-21T09:37:52.0205418Z             },
2026-06-21T09:37:52.0205502Z             {
2026-06-21T09:37:52.0205622Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0205709Z               "line": 247
2026-06-21T09:37:52.0205798Z             },
2026-06-21T09:37:52.0205883Z             {
2026-06-21T09:37:52.0205998Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0206079Z               "line": 270
2026-06-21T09:37:52.0206162Z             },
2026-06-21T09:37:52.0206248Z             {
2026-06-21T09:37:52.0206363Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.0206445Z               "line": 104
2026-06-21T09:37:52.0206538Z             },
2026-06-21T09:37:52.0206615Z             {
2026-06-21T09:37:52.0206730Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0206825Z               "line": 6068
2026-06-21T09:37:52.0206910Z             },
2026-06-21T09:37:52.0206993Z             {
2026-06-21T09:37:52.0207102Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0207192Z               "line": 6202
2026-06-21T09:37:52.0207264Z             },
2026-06-21T09:37:52.0207355Z             {
2026-06-21T09:37:52.0207450Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0207531Z               "line": 6368
2026-06-21T09:37:52.0207617Z             },
2026-06-21T09:37:52.0207697Z             {
2026-06-21T09:37:52.0207798Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0207883Z               "line": 6896
2026-06-21T09:37:52.0207966Z             }
2026-06-21T09:37:52.0208045Z           ]
2026-06-21T09:37:52.0208136Z         },
2026-06-21T09:37:52.0208300Z         "int": {
2026-06-21T09:37:52.0208393Z           "complete": true,
2026-06-21T09:37:52.0208484Z           "evidence": [
2026-06-21T09:37:52.0208561Z             {
2026-06-21T09:37:52.0208680Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T09:37:52.0208760Z               "line": 16
2026-06-21T09:37:52.0208845Z             },
2026-06-21T09:37:52.0208922Z             {
2026-06-21T09:37:52.0209136Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T09:37:52.0209227Z               "line": 15
2026-06-21T09:37:52.0209309Z             }
2026-06-21T09:37:52.0209394Z           ]
2026-06-21T09:37:52.0209479Z         },
2026-06-21T09:37:52.0209666Z         "unit": {
2026-06-21T09:37:52.0209756Z           "complete": true,
2026-06-21T09:37:52.0209847Z           "evidence": [
2026-06-21T09:37:52.0209928Z             {
2026-06-21T09:37:52.0210052Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0210138Z               "line": 246
2026-06-21T09:37:52.0210220Z             },
2026-06-21T09:37:52.0210305Z             {
2026-06-21T09:37:52.0210423Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0210511Z               "line": 306
2026-06-21T09:37:52.0210587Z             },
2026-06-21T09:37:52.0210666Z             {
2026-06-21T09:37:52.0210787Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T09:37:52.0210873Z               "line": 363
2026-06-21T09:37:52.0210958Z             },
2026-06-21T09:37:52.0211038Z             {
2026-06-21T09:37:52.0211153Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0211247Z               "line": 286
2026-06-21T09:37:52.0211336Z             },
2026-06-21T09:37:52.0211417Z             {
2026-06-21T09:37:52.0211533Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0211622Z               "line": 338
2026-06-21T09:37:52.0211698Z             },
2026-06-21T09:37:52.0211785Z             {
2026-06-21T09:37:52.0211913Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.0211998Z               "line": 783
2026-06-21T09:37:52.0212095Z             },
2026-06-21T09:37:52.0212176Z             {
2026-06-21T09:37:52.0212275Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0212371Z               "line": 8751
2026-06-21T09:37:52.0212448Z             },
2026-06-21T09:37:52.0212524Z             {
2026-06-21T09:37:52.0212628Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0212709Z               "line": 8904
2026-06-21T09:37:52.0212786Z             },
2026-06-21T09:37:52.0212871Z             {
2026-06-21T09:37:52.0212976Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0213059Z               "line": 9493
2026-06-21T09:37:52.0213139Z             },
2026-06-21T09:37:52.0213214Z             {
2026-06-21T09:37:52.0213310Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0213402Z               "line": 9609
2026-06-21T09:37:52.0213487Z             }
2026-06-21T09:37:52.0213578Z           ]
2026-06-21T09:37:52.0213654Z         }
2026-06-21T09:37:52.0213740Z       }
2026-06-21T09:37:52.0213825Z     },
2026-06-21T09:37:52.0213924Z     {
2026-06-21T09:37:52.0214010Z       "id": "REQ-EP-6",
2026-06-21T09:37:52.0215486Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T09:37:52.0215591Z       "requiredStages": [
2026-06-21T09:37:52.0215682Z         "doc",
2026-06-21T09:37:52.0215776Z         "impl",
2026-06-21T09:37:52.0215863Z         "unit"
2026-06-21T09:37:52.0215954Z       ],
2026-06-21T09:37:52.0216153Z       "stages": {
2026-06-21T09:37:52.0216241Z         "doc": {
2026-06-21T09:37:52.0216340Z           "complete": true,
2026-06-21T09:37:52.0216420Z           "evidence": [
2026-06-21T09:37:52.0216505Z             {
2026-06-21T09:37:52.0216600Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.0216690Z               "line": 227
2026-06-21T09:37:52.0216775Z             }
2026-06-21T09:37:52.0216855Z           ]
2026-06-21T09:37:52.0216942Z         },
2026-06-21T09:37:52.0217024Z         "impl": {
2026-06-21T09:37:52.0217122Z           "complete": true,
2026-06-21T09:37:52.0217199Z           "evidence": [
2026-06-21T09:37:52.0217290Z             {
2026-06-21T09:37:52.0217499Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0217582Z               "line": 212
2026-06-21T09:37:52.0217662Z             }
2026-06-21T09:37:52.0217742Z           ]
2026-06-21T09:37:52.0217829Z         },
2026-06-21T09:37:52.0217906Z         "int": {
2026-06-21T09:37:52.0218005Z           "complete": true,
2026-06-21T09:37:52.0218091Z           "evidence": [
2026-06-21T09:37:52.0218177Z             {
2026-06-21T09:37:52.0218300Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T09:37:52.0218386Z               "line": 18
2026-06-21T09:37:52.0218468Z             }
2026-06-21T09:37:52.0218550Z           ]
2026-06-21T09:37:52.0218634Z         },
2026-06-21T09:37:52.0218710Z         "unit": {
2026-06-21T09:37:52.0218793Z           "complete": true,
2026-06-21T09:37:52.0218888Z           "evidence": [
2026-06-21T09:37:52.0219025Z             {
2026-06-21T09:37:52.0219151Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.0219249Z               "line": 556
2026-06-21T09:37:52.0219334Z             },
2026-06-21T09:37:52.0219410Z             {
2026-06-21T09:37:52.0219530Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0219615Z               "line": 904
2026-06-21T09:37:52.0219701Z             }
2026-06-21T09:37:52.0219778Z           ]
2026-06-21T09:37:52.0219873Z         }
2026-06-21T09:37:52.0219963Z       }
2026-06-21T09:37:52.0220049Z     },
2026-06-21T09:37:52.0220127Z     {
2026-06-21T09:37:52.0220212Z       "id": "REQ-EP-7",
2026-06-21T09:37:52.0221816Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T09:37:52.0221934Z       "requiredStages": [
2026-06-21T09:37:52.0222025Z         "doc",
2026-06-21T09:37:52.0222112Z         "impl",
2026-06-21T09:37:52.0222197Z         "unit"
2026-06-21T09:37:52.0222277Z       ],
2026-06-21T09:37:52.0222369Z       "stages": {
2026-06-21T09:37:52.0222454Z         "doc": {
2026-06-21T09:37:52.0222549Z           "complete": true,
2026-06-21T09:37:52.0222635Z           "evidence": [
2026-06-21T09:37:52.0222717Z             {
2026-06-21T09:37:52.0222821Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.0222901Z               "line": 490
2026-06-21T09:37:52.0222989Z             }
2026-06-21T09:37:52.0223074Z           ]
2026-06-21T09:37:52.0223160Z         },
2026-06-21T09:37:52.0223246Z         "impl": {
2026-06-21T09:37:52.0223327Z           "complete": true,
2026-06-21T09:37:52.0223417Z           "evidence": [
2026-06-21T09:37:52.0223494Z             {
2026-06-21T09:37:52.0223614Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.0223708Z               "line": 505
2026-06-21T09:37:52.0223794Z             },
2026-06-21T09:37:52.0223899Z             {
2026-06-21T09:37:52.0224014Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.0224108Z               "line": 87
2026-06-21T09:37:52.0224296Z             },
2026-06-21T09:37:52.0224380Z             {
2026-06-21T09:37:52.0224503Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0224594Z               "line": 81
2026-06-21T09:37:52.0224683Z             },
2026-06-21T09:37:52.0224759Z             {
2026-06-21T09:37:52.0224883Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0224969Z               "line": 166
2026-06-21T09:37:52.0225054Z             },
2026-06-21T09:37:52.0225139Z             {
2026-06-21T09:37:52.0225236Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0225326Z               "line": 1645
2026-06-21T09:37:52.0225502Z             }
2026-06-21T09:37:52.0225594Z           ]
2026-06-21T09:37:52.0225680Z         },
2026-06-21T09:37:52.0225759Z         "int": {
2026-06-21T09:37:52.0225861Z           "complete": false,
2026-06-21T09:37:52.0225946Z           "evidence": []
2026-06-21T09:37:52.0226027Z         },
2026-06-21T09:37:52.0226118Z         "unit": {
2026-06-21T09:37:52.0226199Z           "complete": true,
2026-06-21T09:37:52.0226294Z           "evidence": [
2026-06-21T09:37:52.0226380Z             {
2026-06-21T09:37:52.0226496Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.0226581Z               "line": 623
2026-06-21T09:37:52.0226670Z             },
2026-06-21T09:37:52.0226752Z             {
2026-06-21T09:37:52.0226867Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.0226956Z               "line": 212
2026-06-21T09:37:52.0227037Z             },
2026-06-21T09:37:52.0227118Z             {
2026-06-21T09:37:52.0227222Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.0227311Z               "line": 307
2026-06-21T09:37:52.0227397Z             },
2026-06-21T09:37:52.0227483Z             {
2026-06-21T09:37:52.0227589Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0227668Z               "line": 7724
2026-06-21T09:37:52.0227754Z             },
2026-06-21T09:37:52.0227832Z             {
2026-06-21T09:37:52.0227941Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0228026Z               "line": 7751
2026-06-21T09:37:52.0228113Z             }
2026-06-21T09:37:52.0228189Z           ]
2026-06-21T09:37:52.0228274Z         }
2026-06-21T09:37:52.0228360Z       }
2026-06-21T09:37:52.0228442Z     },
2026-06-21T09:37:52.0228531Z     {
2026-06-21T09:37:52.0228608Z       "id": "REQ-FRONT-1",
2026-06-21T09:37:52.0228781Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T09:37:52.0228880Z       "requiredStages": [],
2026-06-21T09:37:52.0229062Z       "stages": {
2026-06-21T09:37:52.0229152Z         "doc": {
2026-06-21T09:37:52.0229238Z           "complete": false,
2026-06-21T09:37:52.0229328Z           "evidence": []
2026-06-21T09:37:52.0229410Z         },
2026-06-21T09:37:52.0229513Z         "impl": {
2026-06-21T09:37:52.0229614Z           "complete": false,
2026-06-21T09:37:52.0229706Z           "evidence": []
2026-06-21T09:37:52.0229791Z         },
2026-06-21T09:37:52.0229866Z         "int": {
2026-06-21T09:37:52.0229960Z           "complete": false,
2026-06-21T09:37:52.0230042Z           "evidence": []
2026-06-21T09:37:52.0230120Z         },
2026-06-21T09:37:52.0230204Z         "unit": {
2026-06-21T09:37:52.0230299Z           "complete": false,
2026-06-21T09:37:52.0230386Z           "evidence": []
2026-06-21T09:37:52.0230472Z         }
2026-06-21T09:37:52.0230552Z       }
2026-06-21T09:37:52.0230634Z     },
2026-06-21T09:37:52.0230711Z     {
2026-06-21T09:37:52.0230815Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T09:37:52.0236009Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T09:37:52.0236353Z       "requiredStages": [
2026-06-21T09:37:52.0236440Z         "int"
2026-06-21T09:37:52.0236530Z       ],
2026-06-21T09:37:52.0236621Z       "stages": {
2026-06-21T09:37:52.0236702Z         "doc": {
2026-06-21T09:37:52.0236797Z           "complete": false,
2026-06-21T09:37:52.0236892Z           "evidence": []
2026-06-21T09:37:52.0236978Z         },
2026-06-21T09:37:52.0237061Z         "impl": {
2026-06-21T09:37:52.0237150Z           "complete": false,
2026-06-21T09:37:52.0237235Z           "evidence": []
2026-06-21T09:37:52.0237317Z         },
2026-06-21T09:37:52.0237413Z         "int": {
2026-06-21T09:37:52.0237498Z           "complete": true,
2026-06-21T09:37:52.0237597Z           "evidence": [
2026-06-21T09:37:52.0237683Z             {
2026-06-21T09:37:52.0237810Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T09:37:52.0237909Z               "line": 300
2026-06-21T09:37:52.0237990Z             }
2026-06-21T09:37:52.0238067Z           ]
2026-06-21T09:37:52.0238153Z         },
2026-06-21T09:37:52.0238228Z         "unit": {
2026-06-21T09:37:52.0238319Z           "complete": false,
2026-06-21T09:37:52.0238411Z           "evidence": []
2026-06-21T09:37:52.0238492Z         }
2026-06-21T09:37:52.0238576Z       }
2026-06-21T09:37:52.0238663Z     },
2026-06-21T09:37:52.0238754Z     {
2026-06-21T09:37:52.0238863Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T09:37:52.0241465Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T09:37:52.0241576Z       "requiredStages": [
2026-06-21T09:37:52.0241661Z         "impl",
2026-06-21T09:37:52.0241741Z         "unit",
2026-06-21T09:37:52.0241823Z         "int"
2026-06-21T09:37:52.0241910Z       ],
2026-06-21T09:37:52.0241990Z       "stages": {
2026-06-21T09:37:52.0242075Z         "doc": {
2026-06-21T09:37:52.0242276Z           "complete": false,
2026-06-21T09:37:52.0242371Z           "evidence": []
2026-06-21T09:37:52.0242452Z         },
2026-06-21T09:37:52.0242545Z         "impl": {
2026-06-21T09:37:52.0242638Z           "complete": true,
2026-06-21T09:37:52.0242728Z           "evidence": [
2026-06-21T09:37:52.0242809Z             {
2026-06-21T09:37:52.0242927Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0243017Z               "line": 257
2026-06-21T09:37:52.0243102Z             }
2026-06-21T09:37:52.0243179Z           ]
2026-06-21T09:37:52.0243270Z         },
2026-06-21T09:37:52.0243350Z         "int": {
2026-06-21T09:37:52.0243436Z           "complete": true,
2026-06-21T09:37:52.0243627Z           "evidence": [
2026-06-21T09:37:52.0243712Z             {
2026-06-21T09:37:52.0243851Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T09:37:52.0243941Z               "line": 93
2026-06-21T09:37:52.0244032Z             }
2026-06-21T09:37:52.0244114Z           ]
2026-06-21T09:37:52.0244204Z         },
2026-06-21T09:37:52.0244289Z         "unit": {
2026-06-21T09:37:52.0244385Z           "complete": true,
2026-06-21T09:37:52.0244462Z           "evidence": [
2026-06-21T09:37:52.0244547Z             {
2026-06-21T09:37:52.0244666Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0244749Z               "line": 802
2026-06-21T09:37:52.0244833Z             },
2026-06-21T09:37:52.0244914Z             {
2026-06-21T09:37:52.0245030Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0245111Z               "line": 824
2026-06-21T09:37:52.0245190Z             },
2026-06-21T09:37:52.0245272Z             {
2026-06-21T09:37:52.0245393Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0245482Z               "line": 855
2026-06-21T09:37:52.0245567Z             }
2026-06-21T09:37:52.0245652Z           ]
2026-06-21T09:37:52.0245738Z         }
2026-06-21T09:37:52.0245817Z       }
2026-06-21T09:37:52.0245907Z     },
2026-06-21T09:37:52.0245998Z     {
2026-06-21T09:37:52.0246127Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T09:37:52.0248531Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T09:37:52.0248642Z       "requiredStages": [
2026-06-21T09:37:52.0248727Z         "doc",
2026-06-21T09:37:52.0248812Z         "impl",
2026-06-21T09:37:52.0248894Z         "unit",
2026-06-21T09:37:52.0249047Z         "int"
2026-06-21T09:37:52.0249131Z       ],
2026-06-21T09:37:52.0249224Z       "stages": {
2026-06-21T09:37:52.0249314Z         "doc": {
2026-06-21T09:37:52.0249446Z           "complete": true,
2026-06-21T09:37:52.0249548Z           "evidence": [
2026-06-21T09:37:52.0249633Z             {
2026-06-21T09:37:52.0249742Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0249828Z               "line": 333
2026-06-21T09:37:52.0249938Z             }
2026-06-21T09:37:52.0250071Z           ]
2026-06-21T09:37:52.0250153Z         },
2026-06-21T09:37:52.0250239Z         "impl": {
2026-06-21T09:37:52.0250329Z           "complete": true,
2026-06-21T09:37:52.0250454Z           "evidence": [
2026-06-21T09:37:52.0250530Z             {
2026-06-21T09:37:52.0250657Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0250888Z               "line": 494
2026-06-21T09:37:52.0250967Z             },
2026-06-21T09:37:52.0251052Z             {
2026-06-21T09:37:52.0251172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0251259Z               "line": 499
2026-06-21T09:37:52.0251348Z             },
2026-06-21T09:37:52.0251429Z             {
2026-06-21T09:37:52.0251554Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0251639Z               "line": 874
2026-06-21T09:37:52.0251720Z             },
2026-06-21T09:37:52.0251797Z             {
2026-06-21T09:37:52.0251922Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0252107Z               "line": 915
2026-06-21T09:37:52.0252193Z             },
2026-06-21T09:37:52.0252279Z             {
2026-06-21T09:37:52.0252393Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0252489Z               "line": 926
2026-06-21T09:37:52.0252564Z             },
2026-06-21T09:37:52.0252650Z             {
2026-06-21T09:37:52.0252766Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.0252860Z               "line": 358
2026-06-21T09:37:52.0252945Z             }
2026-06-21T09:37:52.0253017Z           ]
2026-06-21T09:37:52.0253109Z         },
2026-06-21T09:37:52.0253193Z         "int": {
2026-06-21T09:37:52.0253293Z           "complete": true,
2026-06-21T09:37:52.0253383Z           "evidence": [
2026-06-21T09:37:52.0253464Z             {
2026-06-21T09:37:52.0253591Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T09:37:52.0253677Z               "line": 30
2026-06-21T09:37:52.0253763Z             }
2026-06-21T09:37:52.0253844Z           ]
2026-06-21T09:37:52.0253920Z         },
2026-06-21T09:37:52.0253996Z         "unit": {
2026-06-21T09:37:52.0254083Z           "complete": true,
2026-06-21T09:37:52.0254173Z           "evidence": [
2026-06-21T09:37:52.0254263Z             {
2026-06-21T09:37:52.0254384Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0254474Z               "line": 1493
2026-06-21T09:37:52.0254563Z             },
2026-06-21T09:37:52.0254650Z             {
2026-06-21T09:37:52.0254774Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0254863Z               "line": 1518
2026-06-21T09:37:52.0254945Z             },
2026-06-21T09:37:52.0255032Z             {
2026-06-21T09:37:52.0255150Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0255245Z               "line": 1535
2026-06-21T09:37:52.0255323Z             },
2026-06-21T09:37:52.0255407Z             {
2026-06-21T09:37:52.0255536Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0255618Z               "line": 1578
2026-06-21T09:37:52.0255708Z             }
2026-06-21T09:37:52.0255789Z           ]
2026-06-21T09:37:52.0255875Z         }
2026-06-21T09:37:52.0255943Z       }
2026-06-21T09:37:52.0256033Z     },
2026-06-21T09:37:52.0256132Z     {
2026-06-21T09:37:52.0256270Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T09:37:52.0258784Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T09:37:52.0259053Z       "requiredStages": [],
2026-06-21T09:37:52.0259139Z       "stages": {
2026-06-21T09:37:52.0259235Z         "doc": {
2026-06-21T09:37:52.0259339Z           "complete": false,
2026-06-21T09:37:52.0259430Z           "evidence": []
2026-06-21T09:37:52.0262133Z         },
2026-06-21T09:37:52.0262246Z         "impl": {
2026-06-21T09:37:52.0262348Z           "complete": false,
2026-06-21T09:37:52.0262438Z           "evidence": []
2026-06-21T09:37:52.0262533Z         },
2026-06-21T09:37:52.0262619Z         "int": {
2026-06-21T09:37:52.0262701Z           "complete": false,
2026-06-21T09:37:52.0262786Z           "evidence": []
2026-06-21T09:37:52.0263016Z         },
2026-06-21T09:37:52.0263101Z         "unit": {
2026-06-21T09:37:52.0263186Z           "complete": false,
2026-06-21T09:37:52.0263283Z           "evidence": []
2026-06-21T09:37:52.0263364Z         }
2026-06-21T09:37:52.0263443Z       }
2026-06-21T09:37:52.0263529Z     },
2026-06-21T09:37:52.0263612Z     {
2026-06-21T09:37:52.0263763Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T09:37:52.0267538Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T09:37:52.0267652Z       "requiredStages": [
2026-06-21T09:37:52.0267738Z         "impl",
2026-06-21T09:37:52.0267825Z         "unit",
2026-06-21T09:37:52.0267906Z         "int"
2026-06-21T09:37:52.0267990Z       ],
2026-06-21T09:37:52.0268072Z       "stages": {
2026-06-21T09:37:52.0268159Z         "doc": {
2026-06-21T09:37:52.0268249Z           "complete": false,
2026-06-21T09:37:52.0268339Z           "evidence": []
2026-06-21T09:37:52.0268426Z         },
2026-06-21T09:37:52.0268501Z         "impl": {
2026-06-21T09:37:52.0268606Z           "complete": true,
2026-06-21T09:37:52.0268692Z           "evidence": [
2026-06-21T09:37:52.0268784Z             {
2026-06-21T09:37:52.0268916Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0269094Z               "line": 570
2026-06-21T09:37:52.0269183Z             },
2026-06-21T09:37:52.0269263Z             {
2026-06-21T09:37:52.0269387Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0269476Z               "line": 594
2026-06-21T09:37:52.0269566Z             },
2026-06-21T09:37:52.0269651Z             {
2026-06-21T09:37:52.0269781Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0269866Z               "line": 620
2026-06-21T09:37:52.0269946Z             },
2026-06-21T09:37:52.0270039Z             {
2026-06-21T09:37:52.0270172Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0270261Z               "line": 679
2026-06-21T09:37:52.0270344Z             },
2026-06-21T09:37:52.0270424Z             {
2026-06-21T09:37:52.0270543Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0270720Z               "line": 89
2026-06-21T09:37:52.0270810Z             },
2026-06-21T09:37:52.0270896Z             {
2026-06-21T09:37:52.0270998Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0271111Z               "line": 134
2026-06-21T09:37:52.0271201Z             }
2026-06-21T09:37:52.0271288Z           ]
2026-06-21T09:37:52.0271364Z         },
2026-06-21T09:37:52.0271449Z         "int": {
2026-06-21T09:37:52.0271531Z           "complete": true,
2026-06-21T09:37:52.0271617Z           "evidence": [
2026-06-21T09:37:52.0271702Z             {
2026-06-21T09:37:52.0271845Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T09:37:52.0272221Z               "line": 20
2026-06-21T09:37:52.0272307Z             }
2026-06-21T09:37:52.0272388Z           ]
2026-06-21T09:37:52.0272469Z         },
2026-06-21T09:37:52.0272559Z         "unit": {
2026-06-21T09:37:52.0272651Z           "complete": true,
2026-06-21T09:37:52.0272745Z           "evidence": [
2026-06-21T09:37:52.0272826Z             {
2026-06-21T09:37:52.0272937Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0273032Z               "line": 1047
2026-06-21T09:37:52.0273108Z             },
2026-06-21T09:37:52.0273193Z             {
2026-06-21T09:37:52.0273304Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0273389Z               "line": 445
2026-06-21T09:37:52.0273474Z             }
2026-06-21T09:37:52.0273562Z           ]
2026-06-21T09:37:52.0273647Z         }
2026-06-21T09:37:52.0273728Z       }
2026-06-21T09:37:52.0273814Z     },
2026-06-21T09:37:52.0273890Z     {
2026-06-21T09:37:52.0274018Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T09:37:52.0276561Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T09:37:52.0276671Z       "requiredStages": [
2026-06-21T09:37:52.0276758Z         "doc",
2026-06-21T09:37:52.0276862Z         "impl",
2026-06-21T09:37:52.0276957Z         "unit",
2026-06-21T09:37:52.0277034Z         "int"
2026-06-21T09:37:52.0277116Z       ],
2026-06-21T09:37:52.0277200Z       "stages": {
2026-06-21T09:37:52.0277285Z         "doc": {
2026-06-21T09:37:52.0277376Z           "complete": true,
2026-06-21T09:37:52.0277470Z           "evidence": [
2026-06-21T09:37:52.0277559Z             {
2026-06-21T09:37:52.0277664Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0277751Z               "line": 302
2026-06-21T09:37:52.0277832Z             }
2026-06-21T09:37:52.0277907Z           ]
2026-06-21T09:37:52.0277988Z         },
2026-06-21T09:37:52.0278075Z         "impl": {
2026-06-21T09:37:52.0278161Z           "complete": true,
2026-06-21T09:37:52.0278245Z           "evidence": [
2026-06-21T09:37:52.0278328Z             {
2026-06-21T09:37:52.0278456Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.0278555Z               "line": 108
2026-06-21T09:37:52.0278637Z             },
2026-06-21T09:37:52.0278719Z             {
2026-06-21T09:37:52.0278833Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0278918Z               "line": 843
2026-06-21T09:37:52.0279109Z             },
2026-06-21T09:37:52.0279190Z             {
2026-06-21T09:37:52.0279305Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0279500Z               "line": 1043
2026-06-21T09:37:52.0279592Z             },
2026-06-21T09:37:52.0279678Z             {
2026-06-21T09:37:52.0279795Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0279880Z               "line": 23
2026-06-21T09:37:52.0279957Z             },
2026-06-21T09:37:52.0280041Z             {
2026-06-21T09:37:52.0280159Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0280255Z               "line": 113
2026-06-21T09:37:52.0280336Z             },
2026-06-21T09:37:52.0280417Z             {
2026-06-21T09:37:52.0280632Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0280722Z               "line": 158
2026-06-21T09:37:52.0280803Z             },
2026-06-21T09:37:52.0280889Z             {
2026-06-21T09:37:52.0281008Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0281093Z               "line": 218
2026-06-21T09:37:52.0281180Z             },
2026-06-21T09:37:52.0281267Z             {
2026-06-21T09:37:52.0281380Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0281470Z               "line": 261
2026-06-21T09:37:52.0281553Z             },
2026-06-21T09:37:52.0281638Z             {
2026-06-21T09:37:52.0281761Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0281839Z               "line": 275
2026-06-21T09:37:52.0281920Z             },
2026-06-21T09:37:52.0282004Z             {
2026-06-21T09:37:52.0282124Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0282221Z               "line": 320
2026-06-21T09:37:52.0282309Z             },
2026-06-21T09:37:52.0282391Z             {
2026-06-21T09:37:52.0282507Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0282591Z               "line": 347
2026-06-21T09:37:52.0282671Z             },
2026-06-21T09:37:52.0282756Z             {
2026-06-21T09:37:52.0282872Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0282962Z               "line": 359
2026-06-21T09:37:52.0283043Z             },
2026-06-21T09:37:52.0283124Z             {
2026-06-21T09:37:52.0283244Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0283329Z               "line": 373
2026-06-21T09:37:52.0283410Z             },
2026-06-21T09:37:52.0283497Z             {
2026-06-21T09:37:52.0283602Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0283691Z               "line": 400
2026-06-21T09:37:52.0283778Z             },
2026-06-21T09:37:52.0283859Z             {
2026-06-21T09:37:52.0283977Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0284069Z               "line": 643
2026-06-21T09:37:52.0284155Z             },
2026-06-21T09:37:52.0284240Z             {
2026-06-21T09:37:52.0284359Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0284451Z               "line": 989
2026-06-21T09:37:52.0284540Z             },
2026-06-21T09:37:52.0284621Z             {
2026-06-21T09:37:52.0284737Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0284832Z               "line": 310
2026-06-21T09:37:52.0284912Z             },
2026-06-21T09:37:52.0285002Z             {
2026-06-21T09:37:52.0285106Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0285200Z               "line": 1226
2026-06-21T09:37:52.0285299Z             },
2026-06-21T09:37:52.0285386Z             {
2026-06-21T09:37:52.0285487Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0285576Z               "line": 1298
2026-06-21T09:37:52.0285662Z             },
2026-06-21T09:37:52.0285744Z             {
2026-06-21T09:37:52.0285858Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0285943Z               "line": 1310
2026-06-21T09:37:52.0286030Z             },
2026-06-21T09:37:52.0286211Z             {
2026-06-21T09:37:52.0286321Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0286416Z               "line": 2016
2026-06-21T09:37:52.0286502Z             },
2026-06-21T09:37:52.0286587Z             {
2026-06-21T09:37:52.0286698Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0286792Z               "line": 188
2026-06-21T09:37:52.0286878Z             },
2026-06-21T09:37:52.0286960Z             {
2026-06-21T09:37:52.0287069Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0287160Z               "line": 265
2026-06-21T09:37:52.0287241Z             },
2026-06-21T09:37:52.0287403Z             {
2026-06-21T09:37:52.0287517Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0287614Z               "line": 276
2026-06-21T09:37:52.0287695Z             },
2026-06-21T09:37:52.0287779Z             {
2026-06-21T09:37:52.0287883Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0287983Z               "line": 329
2026-06-21T09:37:52.0288063Z             },
2026-06-21T09:37:52.0288143Z             {
2026-06-21T09:37:52.0288253Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0288330Z               "line": 56
2026-06-21T09:37:52.0288415Z             },
2026-06-21T09:37:52.0288496Z             {
2026-06-21T09:37:52.0288611Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0288697Z               "line": 188
2026-06-21T09:37:52.0288782Z             },
2026-06-21T09:37:52.0288868Z             {
2026-06-21T09:37:52.0289045Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:37:52.0289149Z               "line": 82
2026-06-21T09:37:52.0289226Z             },
2026-06-21T09:37:52.0289312Z             {
2026-06-21T09:37:52.0289430Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0289517Z               "line": 308
2026-06-21T09:37:52.0289603Z             },
2026-06-21T09:37:52.0289678Z             {
2026-06-21T09:37:52.0289798Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.0289875Z               "line": 424
2026-06-21T09:37:52.0289960Z             },
2026-06-21T09:37:52.0290041Z             {
2026-06-21T09:37:52.0290147Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0290242Z               "line": 2006
2026-06-21T09:37:52.0290322Z             }
2026-06-21T09:37:52.0290398Z           ]
2026-06-21T09:37:52.0290484Z         },
2026-06-21T09:37:52.0290565Z         "int": {
2026-06-21T09:37:52.0290667Z           "complete": true,
2026-06-21T09:37:52.0290748Z           "evidence": [
2026-06-21T09:37:52.0290848Z             {
2026-06-21T09:37:52.0290963Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T09:37:52.0291048Z               "line": 57
2026-06-21T09:37:52.0291130Z             },
2026-06-21T09:37:52.0291211Z             {
2026-06-21T09:37:52.0291315Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T09:37:52.0291406Z               "line": 41
2026-06-21T09:37:52.0291493Z             }
2026-06-21T09:37:52.0291573Z           ]
2026-06-21T09:37:52.0291644Z         },
2026-06-21T09:37:52.0291730Z         "unit": {
2026-06-21T09:37:52.0291827Z           "complete": true,
2026-06-21T09:37:52.0291916Z           "evidence": [
2026-06-21T09:37:52.0291997Z             {
2026-06-21T09:37:52.0292123Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.0292202Z               "line": 532
2026-06-21T09:37:52.0292288Z             },
2026-06-21T09:37:52.0292360Z             {
2026-06-21T09:37:52.0292476Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.0292574Z               "line": 757
2026-06-21T09:37:52.0292656Z             },
2026-06-21T09:37:52.0292742Z             {
2026-06-21T09:37:52.0292855Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0292941Z               "line": 1067
2026-06-21T09:37:52.0293024Z             },
2026-06-21T09:37:52.0293203Z             {
2026-06-21T09:37:52.0293312Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0293399Z               "line": 1101
2026-06-21T09:37:52.0293481Z             },
2026-06-21T09:37:52.0293570Z             {
2026-06-21T09:37:52.0293684Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0293776Z               "line": 1143
2026-06-21T09:37:52.0293856Z             },
2026-06-21T09:37:52.0293942Z             {
2026-06-21T09:37:52.0294043Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0294138Z               "line": 1215
2026-06-21T09:37:52.0294305Z             },
2026-06-21T09:37:52.0294386Z             {
2026-06-21T09:37:52.0294505Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0294595Z               "line": 1228
2026-06-21T09:37:52.0294677Z             },
2026-06-21T09:37:52.0294762Z             {
2026-06-21T09:37:52.0294876Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0294973Z               "line": 1251
2026-06-21T09:37:52.0295058Z             },
2026-06-21T09:37:52.0295138Z             {
2026-06-21T09:37:52.0295248Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0295340Z               "line": 1277
2026-06-21T09:37:52.0295419Z             },
2026-06-21T09:37:52.0295505Z             {
2026-06-21T09:37:52.0295619Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0295700Z               "line": 1291
2026-06-21T09:37:52.0295789Z             },
2026-06-21T09:37:52.0295869Z             {
2026-06-21T09:37:52.0295980Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0296066Z               "line": 1315
2026-06-21T09:37:52.0296151Z             },
2026-06-21T09:37:52.0296237Z             {
2026-06-21T09:37:52.0296357Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0296446Z               "line": 1447
2026-06-21T09:37:52.0296537Z             },
2026-06-21T09:37:52.0296619Z             {
2026-06-21T09:37:52.0296737Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0296822Z               "line": 1623
2026-06-21T09:37:52.0296901Z             },
2026-06-21T09:37:52.0296991Z             {
2026-06-21T09:37:52.0297109Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0297195Z               "line": 1678
2026-06-21T09:37:52.0297286Z             },
2026-06-21T09:37:52.0297367Z             {
2026-06-21T09:37:52.0297491Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0297582Z               "line": 1724
2026-06-21T09:37:52.0297677Z             },
2026-06-21T09:37:52.0297758Z             {
2026-06-21T09:37:52.0297864Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0297958Z               "line": 1769
2026-06-21T09:37:52.0298029Z             },
2026-06-21T09:37:52.0298116Z             {
2026-06-21T09:37:52.0298231Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0298315Z               "line": 1813
2026-06-21T09:37:52.0298400Z             },
2026-06-21T09:37:52.0298481Z             {
2026-06-21T09:37:52.0298604Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0298684Z               "line": 1855
2026-06-21T09:37:52.0298770Z             },
2026-06-21T09:37:52.0298847Z             {
2026-06-21T09:37:52.0299046Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0299138Z               "line": 2369
2026-06-21T09:37:52.0299215Z             },
2026-06-21T09:37:52.0299300Z             {
2026-06-21T09:37:52.0299419Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0299515Z               "line": 217
2026-06-21T09:37:52.0299605Z             },
2026-06-21T09:37:52.0299680Z             {
2026-06-21T09:37:52.0299801Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0299986Z               "line": 233
2026-06-21T09:37:52.0300072Z             },
2026-06-21T09:37:52.0300144Z             {
2026-06-21T09:37:52.0300267Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0300353Z               "line": 254
2026-06-21T09:37:52.0300435Z             },
2026-06-21T09:37:52.0300525Z             {
2026-06-21T09:37:52.0300634Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0300717Z               "line": 265
2026-06-21T09:37:52.0300802Z             },
2026-06-21T09:37:52.0300892Z             {
2026-06-21T09:37:52.0301010Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0301199Z               "line": 278
2026-06-21T09:37:52.0301279Z             },
2026-06-21T09:37:52.0301361Z             {
2026-06-21T09:37:52.0301481Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0301575Z               "line": 289
2026-06-21T09:37:52.0301656Z             },
2026-06-21T09:37:52.0301743Z             {
2026-06-21T09:37:52.0301848Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0301937Z               "line": 301
2026-06-21T09:37:52.0302015Z             },
2026-06-21T09:37:52.0302096Z             {
2026-06-21T09:37:52.0302209Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0302290Z               "line": 312
2026-06-21T09:37:52.0302368Z             },
2026-06-21T09:37:52.0302452Z             {
2026-06-21T09:37:52.0302567Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0302649Z               "line": 323
2026-06-21T09:37:52.0302735Z             },
2026-06-21T09:37:52.0302820Z             {
2026-06-21T09:37:52.0302934Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0303021Z               "line": 332
2026-06-21T09:37:52.0303101Z             },
2026-06-21T09:37:52.0303187Z             {
2026-06-21T09:37:52.0303302Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0303402Z               "line": 342
2026-06-21T09:37:52.0303488Z             },
2026-06-21T09:37:52.0303574Z             {
2026-06-21T09:37:52.0303689Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T09:37:52.0303773Z               "line": 358
2026-06-21T09:37:52.0303863Z             },
2026-06-21T09:37:52.0303944Z             {
2026-06-21T09:37:52.0304069Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0304158Z               "line": 758
2026-06-21T09:37:52.0304245Z             },
2026-06-21T09:37:52.0304331Z             {
2026-06-21T09:37:52.0304439Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0304540Z               "line": 794
2026-06-21T09:37:52.0304627Z             },
2026-06-21T09:37:52.0304717Z             {
2026-06-21T09:37:52.0304826Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.0304918Z               "line": 966
2026-06-21T09:37:52.0304998Z             },
2026-06-21T09:37:52.0305088Z             {
2026-06-21T09:37:52.0305208Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:37:52.0305299Z               "line": 145
2026-06-21T09:37:52.0305384Z             },
2026-06-21T09:37:52.0305470Z             {
2026-06-21T09:37:52.0305576Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:37:52.0305670Z               "line": 224
2026-06-21T09:37:52.0305751Z             },
2026-06-21T09:37:52.0305891Z             {
2026-06-21T09:37:52.0306018Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T09:37:52.0306108Z               "line": 293
2026-06-21T09:37:52.0306194Z             },
2026-06-21T09:37:52.0306283Z             {
2026-06-21T09:37:52.0306406Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T09:37:52.0306487Z               "line": 17
2026-06-21T09:37:52.0306578Z             },
2026-06-21T09:37:52.0306659Z             {
2026-06-21T09:37:52.0306773Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T09:37:52.0306950Z               "line": 104
2026-06-21T09:37:52.0307073Z             }
2026-06-21T09:37:52.0307184Z           ]
2026-06-21T09:37:52.0307279Z         }
2026-06-21T09:37:52.0307374Z       }
2026-06-21T09:37:52.0307461Z     },
2026-06-21T09:37:52.0307541Z     {
2026-06-21T09:37:52.0307669Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T09:37:52.0310747Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T09:37:52.0310982Z       "requiredStages": [
2026-06-21T09:37:52.0311062Z         "doc",
2026-06-21T09:37:52.0311151Z         "impl",
2026-06-21T09:37:52.0311238Z         "unit",
2026-06-21T09:37:52.0311325Z         "int"
2026-06-21T09:37:52.0311419Z       ],
2026-06-21T09:37:52.0311508Z       "stages": {
2026-06-21T09:37:52.0311594Z         "doc": {
2026-06-21T09:37:52.0311689Z           "complete": true,
2026-06-21T09:37:52.0311773Z           "evidence": [
2026-06-21T09:37:52.0311858Z             {
2026-06-21T09:37:52.0311973Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0312070Z               "line": 388
2026-06-21T09:37:52.0312149Z             }
2026-06-21T09:37:52.0312230Z           ]
2026-06-21T09:37:52.0312318Z         },
2026-06-21T09:37:52.0312399Z         "impl": {
2026-06-21T09:37:52.0312478Z           "complete": true,
2026-06-21T09:37:52.0312570Z           "evidence": [
2026-06-21T09:37:52.0312651Z             {
2026-06-21T09:37:52.0312779Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0312860Z               "line": 823
2026-06-21T09:37:52.0312947Z             },
2026-06-21T09:37:52.0313027Z             {
2026-06-21T09:37:52.0313146Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0313247Z               "line": 846
2026-06-21T09:37:52.0313328Z             }
2026-06-21T09:37:52.0313418Z           ]
2026-06-21T09:37:52.0313499Z         },
2026-06-21T09:37:52.0313591Z         "int": {
2026-06-21T09:37:52.0313685Z           "complete": true,
2026-06-21T09:37:52.0313771Z           "evidence": [
2026-06-21T09:37:52.0313863Z             {
2026-06-21T09:37:52.0313985Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:37:52.0314067Z               "line": 228
2026-06-21T09:37:52.0314149Z             },
2026-06-21T09:37:52.0314244Z             {
2026-06-21T09:37:52.0314366Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:37:52.0314446Z               "line": 468
2026-06-21T09:37:52.0314528Z             }
2026-06-21T09:37:52.0314601Z           ]
2026-06-21T09:37:52.0314685Z         },
2026-06-21T09:37:52.0314761Z         "unit": {
2026-06-21T09:37:52.0314858Z           "complete": true,
2026-06-21T09:37:52.0314958Z           "evidence": [
2026-06-21T09:37:52.0315043Z             {
2026-06-21T09:37:52.0315158Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.0315243Z               "line": 1583
2026-06-21T09:37:52.0315324Z             }
2026-06-21T09:37:52.0315410Z           ]
2026-06-21T09:37:52.0315492Z         }
2026-06-21T09:37:52.0315681Z       }
2026-06-21T09:37:52.0315764Z     },
2026-06-21T09:37:52.0315855Z     {
2026-06-21T09:37:52.0315973Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T09:37:52.0319602Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T09:37:52.0319810Z       "requiredStages": [
2026-06-21T09:37:52.0319895Z         "doc",
2026-06-21T09:37:52.0319981Z         "impl",
2026-06-21T09:37:52.0320063Z         "unit"
2026-06-21T09:37:52.0320143Z       ],
2026-06-21T09:37:52.0320243Z       "stages": {
2026-06-21T09:37:52.0320325Z         "doc": {
2026-06-21T09:37:52.0320420Z           "complete": true,
2026-06-21T09:37:52.0320514Z           "evidence": [
2026-06-21T09:37:52.0320593Z             {
2026-06-21T09:37:52.0320697Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0320787Z               "line": 395
2026-06-21T09:37:52.0320868Z             }
2026-06-21T09:37:52.0320954Z           ]
2026-06-21T09:37:52.0321040Z         },
2026-06-21T09:37:52.0321116Z         "impl": {
2026-06-21T09:37:52.0321212Z           "complete": true,
2026-06-21T09:37:52.0321302Z           "evidence": [
2026-06-21T09:37:52.0321387Z             {
2026-06-21T09:37:52.0321503Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0321593Z               "line": 75
2026-06-21T09:37:52.0321683Z             }
2026-06-21T09:37:52.0321760Z           ]
2026-06-21T09:37:52.0321842Z         },
2026-06-21T09:37:52.0321922Z         "int": {
2026-06-21T09:37:52.0322026Z           "complete": false,
2026-06-21T09:37:52.0322116Z           "evidence": []
2026-06-21T09:37:52.0322202Z         },
2026-06-21T09:37:52.0322296Z         "unit": {
2026-06-21T09:37:52.0322395Z           "complete": true,
2026-06-21T09:37:52.0322486Z           "evidence": [
2026-06-21T09:37:52.0322568Z             {
2026-06-21T09:37:52.0322677Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0322762Z               "line": 632
2026-06-21T09:37:52.0322844Z             }
2026-06-21T09:37:52.0322934Z           ]
2026-06-21T09:37:52.0323015Z         }
2026-06-21T09:37:52.0323096Z       }
2026-06-21T09:37:52.0323178Z     },
2026-06-21T09:37:52.0323258Z     {
2026-06-21T09:37:52.0323372Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T09:37:52.0323545Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T09:37:52.0323645Z       "requiredStages": [
2026-06-21T09:37:52.0323730Z         "impl",
2026-06-21T09:37:52.0323817Z         "unit"
2026-06-21T09:37:52.0323902Z       ],
2026-06-21T09:37:52.0323988Z       "stages": {
2026-06-21T09:37:52.0324074Z         "doc": {
2026-06-21T09:37:52.0324170Z           "complete": false,
2026-06-21T09:37:52.0324259Z           "evidence": []
2026-06-21T09:37:52.0324345Z         },
2026-06-21T09:37:52.0324423Z         "impl": {
2026-06-21T09:37:52.0324627Z           "complete": true,
2026-06-21T09:37:52.0324709Z           "evidence": [
2026-06-21T09:37:52.0324800Z             {
2026-06-21T09:37:52.0324912Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.0325002Z               "line": 172
2026-06-21T09:37:52.0325079Z             },
2026-06-21T09:37:52.0325156Z             {
2026-06-21T09:37:52.0325264Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.0325350Z               "line": 18
2026-06-21T09:37:52.0325437Z             },
2026-06-21T09:37:52.0325523Z             {
2026-06-21T09:37:52.0325631Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.0325808Z               "line": 100
2026-06-21T09:37:52.0325894Z             }
2026-06-21T09:37:52.0325980Z           ]
2026-06-21T09:37:52.0326057Z         },
2026-06-21T09:37:52.0326151Z         "int": {
2026-06-21T09:37:52.0326232Z           "complete": false,
2026-06-21T09:37:52.0326329Z           "evidence": []
2026-06-21T09:37:52.0326429Z         },
2026-06-21T09:37:52.0326519Z         "unit": {
2026-06-21T09:37:52.0326619Z           "complete": true,
2026-06-21T09:37:52.0326706Z           "evidence": [
2026-06-21T09:37:52.0326795Z             {
2026-06-21T09:37:52.0326910Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.0327006Z               "line": 857
2026-06-21T09:37:52.0327086Z             },
2026-06-21T09:37:52.0327161Z             {
2026-06-21T09:37:52.0327276Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.0327357Z               "line": 161
2026-06-21T09:37:52.0327450Z             },
2026-06-21T09:37:52.0327531Z             {
2026-06-21T09:37:52.0327650Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.0327742Z               "line": 233
2026-06-21T09:37:52.0327821Z             }
2026-06-21T09:37:52.0327908Z           ]
2026-06-21T09:37:52.0327985Z         }
2026-06-21T09:37:52.0328066Z       }
2026-06-21T09:37:52.0328150Z     },
2026-06-21T09:37:52.0328242Z     {
2026-06-21T09:37:52.0328351Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T09:37:52.0328761Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T09:37:52.0328861Z       "requiredStages": [
2026-06-21T09:37:52.0329033Z         "impl",
2026-06-21T09:37:52.0329119Z         "unit"
2026-06-21T09:37:52.0329206Z       ],
2026-06-21T09:37:52.0329310Z       "stages": {
2026-06-21T09:37:52.0329396Z         "doc": {
2026-06-21T09:37:52.0329481Z           "complete": true,
2026-06-21T09:37:52.0329578Z           "evidence": [
2026-06-21T09:37:52.0329653Z             {
2026-06-21T09:37:52.0329772Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0329864Z               "line": 220
2026-06-21T09:37:52.0329931Z             }
2026-06-21T09:37:52.0330024Z           ]
2026-06-21T09:37:52.0330100Z         },
2026-06-21T09:37:52.0330191Z         "impl": {
2026-06-21T09:37:52.0330285Z           "complete": true,
2026-06-21T09:37:52.0330379Z           "evidence": [
2026-06-21T09:37:52.0330455Z             {
2026-06-21T09:37:52.0330575Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.0330670Z               "line": 316
2026-06-21T09:37:52.0330746Z             },
2026-06-21T09:37:52.0330833Z             {
2026-06-21T09:37:52.0330957Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0331056Z               "line": 356
2026-06-21T09:37:52.0331138Z             },
2026-06-21T09:37:52.0331209Z             {
2026-06-21T09:37:52.0331323Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0331414Z               "line": 578
2026-06-21T09:37:52.0331505Z             },
2026-06-21T09:37:52.0331576Z             {
2026-06-21T09:37:52.0331695Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:37:52.0331787Z               "line": 77
2026-06-21T09:37:52.0331976Z             }
2026-06-21T09:37:52.0332058Z           ]
2026-06-21T09:37:52.0332145Z         },
2026-06-21T09:37:52.0332229Z         "int": {
2026-06-21T09:37:52.0332320Z           "complete": false,
2026-06-21T09:37:52.0332416Z           "evidence": []
2026-06-21T09:37:52.0332502Z         },
2026-06-21T09:37:52.0332586Z         "unit": {
2026-06-21T09:37:52.0332676Z           "complete": true,
2026-06-21T09:37:52.0332762Z           "evidence": [
2026-06-21T09:37:52.0332842Z             {
2026-06-21T09:37:52.0332960Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0333055Z               "line": 747
2026-06-21T09:37:52.0333142Z             },
2026-06-21T09:37:52.0333317Z             {
2026-06-21T09:37:52.0333442Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0333528Z               "line": 785
2026-06-21T09:37:52.0333617Z             },
2026-06-21T09:37:52.0333700Z             {
2026-06-21T09:37:52.0333824Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:37:52.0333923Z               "line": 166
2026-06-21T09:37:52.0334005Z             }
2026-06-21T09:37:52.0334086Z           ]
2026-06-21T09:37:52.0334166Z         }
2026-06-21T09:37:52.0334243Z       }
2026-06-21T09:37:52.0334319Z     },
2026-06-21T09:37:52.0334396Z     {
2026-06-21T09:37:52.0334524Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T09:37:52.0335063Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T09:37:52.0335168Z       "requiredStages": [
2026-06-21T09:37:52.0335255Z         "impl",
2026-06-21T09:37:52.0335341Z         "unit"
2026-06-21T09:37:52.0335425Z       ],
2026-06-21T09:37:52.0335515Z       "stages": {
2026-06-21T09:37:52.0335605Z         "doc": {
2026-06-21T09:37:52.0335688Z           "complete": false,
2026-06-21T09:37:52.0335782Z           "evidence": []
2026-06-21T09:37:52.0335872Z         },
2026-06-21T09:37:52.0335968Z         "impl": {
2026-06-21T09:37:52.0336064Z           "complete": true,
2026-06-21T09:37:52.0336158Z           "evidence": [
2026-06-21T09:37:52.0336245Z             {
2026-06-21T09:37:52.0336364Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:37:52.0336454Z               "line": 22
2026-06-21T09:37:52.0336536Z             },
2026-06-21T09:37:52.0336617Z             {
2026-06-21T09:37:52.0336726Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.0336816Z               "line": 487
2026-06-21T09:37:52.0336904Z             },
2026-06-21T09:37:52.0336984Z             {
2026-06-21T09:37:52.0337117Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:37:52.0337199Z               "line": 17
2026-06-21T09:37:52.0337285Z             },
2026-06-21T09:37:52.0337369Z             {
2026-06-21T09:37:52.0337489Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:37:52.0337581Z               "line": 147
2026-06-21T09:37:52.0340533Z             },
2026-06-21T09:37:52.0340651Z             {
2026-06-21T09:37:52.0340794Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0340878Z               "line": 226
2026-06-21T09:37:52.0340968Z             },
2026-06-21T09:37:52.0341054Z             {
2026-06-21T09:37:52.0341188Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0341277Z               "line": 251
2026-06-21T09:37:52.0341364Z             },
2026-06-21T09:37:52.0341445Z             {
2026-06-21T09:37:52.0341568Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0341664Z               "line": 277
2026-06-21T09:37:52.0341741Z             },
2026-06-21T09:37:52.0341832Z             {
2026-06-21T09:37:52.0341950Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.0342037Z               "line": 124
2026-06-21T09:37:52.0342112Z             },
2026-06-21T09:37:52.0342308Z             {
2026-06-21T09:37:52.0342432Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.0342508Z               "line": 224
2026-06-21T09:37:52.0342594Z             }
2026-06-21T09:37:52.0342681Z           ]
2026-06-21T09:37:52.0342765Z         },
2026-06-21T09:37:52.0342846Z         "int": {
2026-06-21T09:37:52.0342943Z           "complete": false,
2026-06-21T09:37:52.0343039Z           "evidence": []
2026-06-21T09:37:52.0343118Z         },
2026-06-21T09:37:52.0343203Z         "unit": {
2026-06-21T09:37:52.0343293Z           "complete": true,
2026-06-21T09:37:52.0343379Z           "evidence": [
2026-06-21T09:37:52.0343572Z             {
2026-06-21T09:37:52.0343707Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:37:52.0343797Z               "line": 63
2026-06-21T09:37:52.0343882Z             },
2026-06-21T09:37:52.0343970Z             {
2026-06-21T09:37:52.0344079Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:37:52.0344173Z               "line": 73
2026-06-21T09:37:52.0344250Z             },
2026-06-21T09:37:52.0344336Z             {
2026-06-21T09:37:52.0344454Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T09:37:52.0344531Z               "line": 85
2026-06-21T09:37:52.0344618Z             },
2026-06-21T09:37:52.0344688Z             {
2026-06-21T09:37:52.0344808Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:37:52.0344894Z               "line": 346
2026-06-21T09:37:52.0344979Z             },
2026-06-21T09:37:52.0345065Z             {
2026-06-21T09:37:52.0345190Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:37:52.0345285Z               "line": 281
2026-06-21T09:37:52.0345365Z             },
2026-06-21T09:37:52.0345447Z             {
2026-06-21T09:37:52.0345563Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:37:52.0345637Z               "line": 322
2026-06-21T09:37:52.0345728Z             },
2026-06-21T09:37:52.0345815Z             {
2026-06-21T09:37:52.0345924Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T09:37:52.0346013Z               "line": 360
2026-06-21T09:37:52.0346103Z             },
2026-06-21T09:37:52.0346180Z             {
2026-06-21T09:37:52.0346305Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0346404Z               "line": 688
2026-06-21T09:37:52.0346485Z             },
2026-06-21T09:37:52.0346572Z             {
2026-06-21T09:37:52.0346690Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.0346786Z               "line": 397
2026-06-21T09:37:52.0346867Z             },
2026-06-21T09:37:52.0346963Z             {
2026-06-21T09:37:52.0347081Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.0347163Z               "line": 440
2026-06-21T09:37:52.0347244Z             }
2026-06-21T09:37:52.0347329Z           ]
2026-06-21T09:37:52.0347415Z         }
2026-06-21T09:37:52.0347497Z       }
2026-06-21T09:37:52.0347592Z     },
2026-06-21T09:37:52.0347673Z     {
2026-06-21T09:37:52.0347774Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T09:37:52.0347992Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T09:37:52.0348078Z       "requiredStages": [
2026-06-21T09:37:52.0348169Z         "impl",
2026-06-21T09:37:52.0348254Z         "unit"
2026-06-21T09:37:52.0348334Z       ],
2026-06-21T09:37:52.0348420Z       "stages": {
2026-06-21T09:37:52.0348501Z         "doc": {
2026-06-21T09:37:52.0348590Z           "complete": false,
2026-06-21T09:37:52.0348675Z           "evidence": []
2026-06-21T09:37:52.0348757Z         },
2026-06-21T09:37:52.0348853Z         "impl": {
2026-06-21T09:37:52.0349009Z           "complete": true,
2026-06-21T09:37:52.0349100Z           "evidence": [
2026-06-21T09:37:52.0349176Z             {
2026-06-21T09:37:52.0349314Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:37:52.0349401Z               "line": 169
2026-06-21T09:37:52.0349648Z             }
2026-06-21T09:37:52.0349730Z           ]
2026-06-21T09:37:52.0349815Z         },
2026-06-21T09:37:52.0349901Z         "int": {
2026-06-21T09:37:52.0349991Z           "complete": true,
2026-06-21T09:37:52.0350073Z           "evidence": [
2026-06-21T09:37:52.0350158Z             {
2026-06-21T09:37:52.0350267Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T09:37:52.0350350Z               "line": 44
2026-06-21T09:37:52.0350435Z             },
2026-06-21T09:37:52.0350516Z             {
2026-06-21T09:37:52.0350626Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T09:37:52.0350707Z               "line": 66
2026-06-21T09:37:52.0350887Z             }
2026-06-21T09:37:52.0350980Z           ]
2026-06-21T09:37:52.0351065Z         },
2026-06-21T09:37:52.0351140Z         "unit": {
2026-06-21T09:37:52.0351225Z           "complete": true,
2026-06-21T09:37:52.0351311Z           "evidence": [
2026-06-21T09:37:52.0351396Z             {
2026-06-21T09:37:52.0351513Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:37:52.0351605Z               "line": 186
2026-06-21T09:37:52.0351695Z             },
2026-06-21T09:37:52.0351776Z             {
2026-06-21T09:37:52.0351885Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:37:52.0351968Z               "line": 238
2026-06-21T09:37:52.0352053Z             },
2026-06-21T09:37:52.0352138Z             {
2026-06-21T09:37:52.0352249Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T09:37:52.0352339Z               "line": 266
2026-06-21T09:37:52.0352420Z             }
2026-06-21T09:37:52.0352500Z           ]
2026-06-21T09:37:52.0352582Z         }
2026-06-21T09:37:52.0352668Z       }
2026-06-21T09:37:52.0352749Z     },
2026-06-21T09:37:52.0352830Z     {
2026-06-21T09:37:52.0352955Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T09:37:52.0357255Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T09:37:52.0357399Z       "requiredStages": [],
2026-06-21T09:37:52.0357489Z       "stages": {
2026-06-21T09:37:52.0357579Z         "doc": {
2026-06-21T09:37:52.0357670Z           "complete": false,
2026-06-21T09:37:52.0357770Z           "evidence": []
2026-06-21T09:37:52.0357851Z         },
2026-06-21T09:37:52.0357941Z         "impl": {
2026-06-21T09:37:52.0358038Z           "complete": false,
2026-06-21T09:37:52.0358137Z           "evidence": []
2026-06-21T09:37:52.0358223Z         },
2026-06-21T09:37:52.0358305Z         "int": {
2026-06-21T09:37:52.0358400Z           "complete": false,
2026-06-21T09:37:52.0358495Z           "evidence": []
2026-06-21T09:37:52.0358581Z         },
2026-06-21T09:37:52.0358753Z         "unit": {
2026-06-21T09:37:52.0358852Z           "complete": false,
2026-06-21T09:37:52.0359023Z           "evidence": []
2026-06-21T09:37:52.0359107Z         }
2026-06-21T09:37:52.0359202Z       }
2026-06-21T09:37:52.0359273Z     },
2026-06-21T09:37:52.0359384Z     {
2026-06-21T09:37:52.0359507Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T09:37:52.0373150Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T09:37:52.0373583Z       "requiredStages": [
2026-06-21T09:37:52.0373678Z         "doc",
2026-06-21T09:37:52.0373770Z         "impl",
2026-06-21T09:37:52.0373840Z         "unit",
2026-06-21T09:37:52.0373921Z         "int"
2026-06-21T09:37:52.0374008Z       ],
2026-06-21T09:37:52.0374094Z       "stages": {
2026-06-21T09:37:52.0374178Z         "doc": {
2026-06-21T09:37:52.0374279Z           "complete": true,
2026-06-21T09:37:52.0374375Z           "evidence": [
2026-06-21T09:37:52.0374451Z             {
2026-06-21T09:37:52.0374565Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0374662Z               "line": 468
2026-06-21T09:37:52.0374743Z             }
2026-06-21T09:37:52.0374822Z           ]
2026-06-21T09:37:52.0374907Z         },
2026-06-21T09:37:52.0374989Z         "impl": {
2026-06-21T09:37:52.0375074Z           "complete": true,
2026-06-21T09:37:52.0375162Z           "evidence": [
2026-06-21T09:37:52.0375248Z             {
2026-06-21T09:37:52.0375368Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0375454Z               "line": 342
2026-06-21T09:37:52.0375534Z             },
2026-06-21T09:37:52.0375616Z             {
2026-06-21T09:37:52.0375725Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0375820Z               "line": 1188
2026-06-21T09:37:52.0375897Z             },
2026-06-21T09:37:52.0375984Z             {
2026-06-21T09:37:52.0376098Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0376192Z               "line": 793
2026-06-21T09:37:52.0376293Z             }
2026-06-21T09:37:52.0376378Z           ]
2026-06-21T09:37:52.0376459Z         },
2026-06-21T09:37:52.0376536Z         "int": {
2026-06-21T09:37:52.0376628Z           "complete": true,
2026-06-21T09:37:52.0376712Z           "evidence": [
2026-06-21T09:37:52.0376798Z             {
2026-06-21T09:37:52.0376923Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.0377017Z               "line": 1163
2026-06-21T09:37:52.0377098Z             },
2026-06-21T09:37:52.0377185Z             {
2026-06-21T09:37:52.0377314Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.0377409Z               "line": 1264
2026-06-21T09:37:52.0377485Z             },
2026-06-21T09:37:52.0377577Z             {
2026-06-21T09:37:52.0377689Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.0377784Z               "line": 1169
2026-06-21T09:37:52.0377856Z             }
2026-06-21T09:37:52.0377942Z           ]
2026-06-21T09:37:52.0378041Z         },
2026-06-21T09:37:52.0378122Z         "unit": {
2026-06-21T09:37:52.0378219Z           "complete": true,
2026-06-21T09:37:52.0378300Z           "evidence": [
2026-06-21T09:37:52.0378384Z             {
2026-06-21T09:37:52.0378500Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0378595Z               "line": 2850
2026-06-21T09:37:52.0378771Z             }
2026-06-21T09:37:52.0378853Z           ]
2026-06-21T09:37:52.0378929Z         }
2026-06-21T09:37:52.0379086Z       }
2026-06-21T09:37:52.0379158Z     },
2026-06-21T09:37:52.0379291Z     {
2026-06-21T09:37:52.0379464Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T09:37:52.0379873Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T09:37:52.0379977Z       "requiredStages": [
2026-06-21T09:37:52.0380067Z         "impl",
2026-06-21T09:37:52.0380148Z         "unit",
2026-06-21T09:37:52.0380341Z         "int"
2026-06-21T09:37:52.0380427Z       ],
2026-06-21T09:37:52.0380514Z       "stages": {
2026-06-21T09:37:52.0380599Z         "doc": {
2026-06-21T09:37:52.0380694Z           "complete": false,
2026-06-21T09:37:52.0380785Z           "evidence": []
2026-06-21T09:37:52.0380866Z         },
2026-06-21T09:37:52.0380956Z         "impl": {
2026-06-21T09:37:52.0381057Z           "complete": true,
2026-06-21T09:37:52.0381138Z           "evidence": [
2026-06-21T09:37:52.0381223Z             {
2026-06-21T09:37:52.0381343Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0381438Z               "line": 178
2026-06-21T09:37:52.0381524Z             },
2026-06-21T09:37:52.0381605Z             {
2026-06-21T09:37:52.0381725Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0381819Z               "line": 226
2026-06-21T09:37:52.0381910Z             },
2026-06-21T09:37:52.0381992Z             {
2026-06-21T09:37:52.0382115Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.0382201Z               "line": 79
2026-06-21T09:37:52.0382292Z             },
2026-06-21T09:37:52.0382374Z             {
2026-06-21T09:37:52.0382487Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.0382573Z               "line": 52
2026-06-21T09:37:52.0382655Z             },
2026-06-21T09:37:52.0382750Z             {
2026-06-21T09:37:52.0382863Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0382948Z               "line": 263
2026-06-21T09:37:52.0383034Z             },
2026-06-21T09:37:52.0383123Z             {
2026-06-21T09:37:52.0383251Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0383337Z               "line": 27
2026-06-21T09:37:52.0383424Z             },
2026-06-21T09:37:52.0383509Z             {
2026-06-21T09:37:52.0383629Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0383719Z               "line": 79
2026-06-21T09:37:52.0383804Z             },
2026-06-21T09:37:52.0383895Z             {
2026-06-21T09:37:52.0384001Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0384096Z               "line": 102
2026-06-21T09:37:52.0384180Z             },
2026-06-21T09:37:52.0384268Z             {
2026-06-21T09:37:52.0384372Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0384467Z               "line": 116
2026-06-21T09:37:52.0384549Z             }
2026-06-21T09:37:52.0384630Z           ]
2026-06-21T09:37:52.0384715Z         },
2026-06-21T09:37:52.0384796Z         "int": {
2026-06-21T09:37:52.0384893Z           "complete": true,
2026-06-21T09:37:52.0384983Z           "evidence": [
2026-06-21T09:37:52.0385058Z             {
2026-06-21T09:37:52.0385188Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T09:37:52.0385274Z               "line": 43
2026-06-21T09:37:52.0385363Z             }
2026-06-21T09:37:52.0385439Z           ]
2026-06-21T09:37:52.0385525Z         },
2026-06-21T09:37:52.0385615Z         "unit": {
2026-06-21T09:37:52.0385709Z           "complete": true,
2026-06-21T09:37:52.0385813Z           "evidence": [
2026-06-21T09:37:52.0385885Z             {
2026-06-21T09:37:52.0386009Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0386099Z               "line": 678
2026-06-21T09:37:52.0386290Z             },
2026-06-21T09:37:52.0386381Z             {
2026-06-21T09:37:52.0386486Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0386582Z               "line": 495
2026-06-21T09:37:52.0386663Z             },
2026-06-21T09:37:52.0386752Z             {
2026-06-21T09:37:52.0386858Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0386948Z               "line": 124
2026-06-21T09:37:52.0387034Z             },
2026-06-21T09:37:52.0387120Z             {
2026-06-21T09:37:52.0387235Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0387321Z               "line": 143
2026-06-21T09:37:52.0387488Z             },
2026-06-21T09:37:52.0387568Z             {
2026-06-21T09:37:52.0387687Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0387775Z               "line": 160
2026-06-21T09:37:52.0387855Z             },
2026-06-21T09:37:52.0387949Z             {
2026-06-21T09:37:52.0388055Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0388151Z               "line": 187
2026-06-21T09:37:52.0388226Z             },
2026-06-21T09:37:52.0388311Z             {
2026-06-21T09:37:52.0388430Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T09:37:52.0388512Z               "line": 206
2026-06-21T09:37:52.0388602Z             },
2026-06-21T09:37:52.0388678Z             {
2026-06-21T09:37:52.0388784Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0388870Z               "line": 229
2026-06-21T09:37:52.0389026Z             }
2026-06-21T09:37:52.0389113Z           ]
2026-06-21T09:37:52.0389194Z         }
2026-06-21T09:37:52.0389278Z       }
2026-06-21T09:37:52.0389360Z     },
2026-06-21T09:37:52.0389446Z     {
2026-06-21T09:37:52.0389570Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T09:37:52.0390199Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T09:37:52.0390299Z       "requiredStages": [
2026-06-21T09:37:52.0390382Z         "impl",
2026-06-21T09:37:52.0390466Z         "unit"
2026-06-21T09:37:52.0390556Z       ],
2026-06-21T09:37:52.0390637Z       "stages": {
2026-06-21T09:37:52.0390728Z         "doc": {
2026-06-21T09:37:52.0390825Z           "complete": false,
2026-06-21T09:37:52.0390910Z           "evidence": []
2026-06-21T09:37:52.0391002Z         },
2026-06-21T09:37:52.0391084Z         "impl": {
2026-06-21T09:37:52.0391182Z           "complete": true,
2026-06-21T09:37:52.0391278Z           "evidence": [
2026-06-21T09:37:52.0391364Z             {
2026-06-21T09:37:52.0391487Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0391573Z               "line": 1257
2026-06-21T09:37:52.0391665Z             },
2026-06-21T09:37:52.0391746Z             {
2026-06-21T09:37:52.0391860Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0391951Z               "line": 1511
2026-06-21T09:37:52.0392032Z             }
2026-06-21T09:37:52.0392117Z           ]
2026-06-21T09:37:52.0392198Z         },
2026-06-21T09:37:52.0392280Z         "int": {
2026-06-21T09:37:52.0392365Z           "complete": false,
2026-06-21T09:37:52.0392451Z           "evidence": []
2026-06-21T09:37:52.0392537Z         },
2026-06-21T09:37:52.0392619Z         "unit": {
2026-06-21T09:37:52.0392708Z           "complete": true,
2026-06-21T09:37:52.0392789Z           "evidence": [
2026-06-21T09:37:52.0392872Z             {
2026-06-21T09:37:52.0392999Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T09:37:52.0393100Z               "line": 161
2026-06-21T09:37:52.0393182Z             }
2026-06-21T09:37:52.0393263Z           ]
2026-06-21T09:37:52.0393352Z         }
2026-06-21T09:37:52.0393432Z       }
2026-06-21T09:37:52.0393518Z     },
2026-06-21T09:37:52.0393604Z     {
2026-06-21T09:37:52.0393821Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T09:37:52.0395543Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T09:37:52.0395744Z       "requiredStages": [
2026-06-21T09:37:52.0395834Z         "impl",
2026-06-21T09:37:52.0395928Z         "unit"
2026-06-21T09:37:52.0396008Z       ],
2026-06-21T09:37:52.0396104Z       "stages": {
2026-06-21T09:37:52.0396184Z         "doc": {
2026-06-21T09:37:52.0396269Z           "complete": false,
2026-06-21T09:37:52.0396373Z           "evidence": []
2026-06-21T09:37:52.0396450Z         },
2026-06-21T09:37:52.0396537Z         "impl": {
2026-06-21T09:37:52.0396626Z           "complete": true,
2026-06-21T09:37:52.0396721Z           "evidence": [
2026-06-21T09:37:52.0396794Z             {
2026-06-21T09:37:52.0396917Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.0397003Z               "line": 257
2026-06-21T09:37:52.0397089Z             }
2026-06-21T09:37:52.0397175Z           ]
2026-06-21T09:37:52.0397260Z         },
2026-06-21T09:37:52.0397346Z         "int": {
2026-06-21T09:37:52.0397433Z           "complete": false,
2026-06-21T09:37:52.0397532Z           "evidence": []
2026-06-21T09:37:52.0397613Z         },
2026-06-21T09:37:52.0397695Z         "unit": {
2026-06-21T09:37:52.0397780Z           "complete": true,
2026-06-21T09:37:52.0397861Z           "evidence": [
2026-06-21T09:37:52.0397942Z             {
2026-06-21T09:37:52.0398053Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.0398147Z               "line": 360
2026-06-21T09:37:52.0398228Z             }
2026-06-21T09:37:52.0398315Z           ]
2026-06-21T09:37:52.0398396Z         }
2026-06-21T09:37:52.0398481Z       }
2026-06-21T09:37:52.0398567Z     },
2026-06-21T09:37:52.0398649Z     {
2026-06-21T09:37:52.0398763Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T09:37:52.0400622Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T09:37:52.0400739Z       "requiredStages": [
2026-06-21T09:37:52.0400831Z         "impl",
2026-06-21T09:37:52.0400908Z         "unit"
2026-06-21T09:37:52.0400999Z       ],
2026-06-21T09:37:52.0401082Z       "stages": {
2026-06-21T09:37:52.0401172Z         "doc": {
2026-06-21T09:37:52.0401259Z           "complete": false,
2026-06-21T09:37:52.0401344Z           "evidence": []
2026-06-21T09:37:52.0401433Z         },
2026-06-21T09:37:52.0401519Z         "impl": {
2026-06-21T09:37:52.0401610Z           "complete": true,
2026-06-21T09:37:52.0401691Z           "evidence": [
2026-06-21T09:37:52.0401781Z             {
2026-06-21T09:37:52.0401916Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0402001Z               "line": 1018
2026-06-21T09:37:52.0402086Z             },
2026-06-21T09:37:52.0402168Z             {
2026-06-21T09:37:52.0402296Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0402381Z               "line": 283
2026-06-21T09:37:52.0402559Z             },
2026-06-21T09:37:52.0402654Z             {
2026-06-21T09:37:52.0402763Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0402855Z               "line": 316
2026-06-21T09:37:52.0402939Z             },
2026-06-21T09:37:52.0403030Z             {
2026-06-21T09:37:52.0403141Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T09:37:52.0403236Z               "line": 26
2026-06-21T09:37:52.0403326Z             }
2026-06-21T09:37:52.0403407Z           ]
2026-06-21T09:37:52.0403490Z         },
2026-06-21T09:37:52.0403574Z         "int": {
2026-06-21T09:37:52.0403655Z           "complete": false,
2026-06-21T09:37:52.0403828Z           "evidence": []
2026-06-21T09:37:52.0403917Z         },
2026-06-21T09:37:52.0404002Z         "unit": {
2026-06-21T09:37:52.0404088Z           "complete": true,
2026-06-21T09:37:52.0404178Z           "evidence": [
2026-06-21T09:37:52.0404262Z             {
2026-06-21T09:37:52.0404381Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T09:37:52.0404463Z               "line": 271
2026-06-21T09:37:52.0404549Z             },
2026-06-21T09:37:52.0404638Z             {
2026-06-21T09:37:52.0404739Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T09:37:52.0404825Z               "line": 348
2026-06-21T09:37:52.0404905Z             }
2026-06-21T09:37:52.0404996Z           ]
2026-06-21T09:37:52.0405083Z         }
2026-06-21T09:37:52.0405163Z       }
2026-06-21T09:37:52.0405248Z     },
2026-06-21T09:37:52.0405330Z     {
2026-06-21T09:37:52.0405445Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T09:37:52.0405616Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T09:37:52.0405713Z       "requiredStages": [
2026-06-21T09:37:52.0405807Z         "impl",
2026-06-21T09:37:52.0405897Z         "unit"
2026-06-21T09:37:52.0405984Z       ],
2026-06-21T09:37:52.0406070Z       "stages": {
2026-06-21T09:37:52.0406154Z         "doc": {
2026-06-21T09:37:52.0406255Z           "complete": false,
2026-06-21T09:37:52.0406347Z           "evidence": []
2026-06-21T09:37:52.0406432Z         },
2026-06-21T09:37:52.0406521Z         "impl": {
2026-06-21T09:37:52.0406621Z           "complete": true,
2026-06-21T09:37:52.0406703Z           "evidence": [
2026-06-21T09:37:52.0406791Z             {
2026-06-21T09:37:52.0406909Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0407001Z               "line": 40
2026-06-21T09:37:52.0407087Z             },
2026-06-21T09:37:52.0407177Z             {
2026-06-21T09:37:52.0407282Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0407363Z               "line": 103
2026-06-21T09:37:52.0407463Z             },
2026-06-21T09:37:52.0407539Z             {
2026-06-21T09:37:52.0407654Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0407749Z               "line": 218
2026-06-21T09:37:52.0407830Z             },
2026-06-21T09:37:52.0407911Z             {
2026-06-21T09:37:52.0408016Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0408116Z               "line": 323
2026-06-21T09:37:52.0408197Z             }
2026-06-21T09:37:52.0408280Z           ]
2026-06-21T09:37:52.0408364Z         },
2026-06-21T09:37:52.0408450Z         "int": {
2026-06-21T09:37:52.0408546Z           "complete": false,
2026-06-21T09:37:52.0408637Z           "evidence": []
2026-06-21T09:37:52.0408721Z         },
2026-06-21T09:37:52.0408803Z         "unit": {
2026-06-21T09:37:52.0408904Z           "complete": true,
2026-06-21T09:37:52.0409074Z           "evidence": [
2026-06-21T09:37:52.0409166Z             {
2026-06-21T09:37:52.0409285Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0409374Z               "line": 361
2026-06-21T09:37:52.0409459Z             },
2026-06-21T09:37:52.0409541Z             {
2026-06-21T09:37:52.0409656Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0409741Z               "line": 433
2026-06-21T09:37:52.0409942Z             },
2026-06-21T09:37:52.0410023Z             {
2026-06-21T09:37:52.0410132Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0410219Z               "line": 496
2026-06-21T09:37:52.0410304Z             },
2026-06-21T09:37:52.0410389Z             {
2026-06-21T09:37:52.0410500Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0410595Z               "line": 517
2026-06-21T09:37:52.0410667Z             }
2026-06-21T09:37:52.0410747Z           ]
2026-06-21T09:37:52.0410843Z         }
2026-06-21T09:37:52.0410929Z       }
2026-06-21T09:37:52.0411010Z     },
2026-06-21T09:37:52.0411096Z     {
2026-06-21T09:37:52.0411334Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T09:37:52.0413600Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T09:37:52.0413715Z       "requiredStages": [
2026-06-21T09:37:52.0413796Z         "impl",
2026-06-21T09:37:52.0413896Z         "unit"
2026-06-21T09:37:52.0413977Z       ],
2026-06-21T09:37:52.0414059Z       "stages": {
2026-06-21T09:37:52.0414139Z         "doc": {
2026-06-21T09:37:52.0414234Z           "complete": false,
2026-06-21T09:37:52.0414316Z           "evidence": []
2026-06-21T09:37:52.0414398Z         },
2026-06-21T09:37:52.0414482Z         "impl": {
2026-06-21T09:37:52.0414576Z           "complete": true,
2026-06-21T09:37:52.0414667Z           "evidence": [
2026-06-21T09:37:52.0414752Z             {
2026-06-21T09:37:52.0414879Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.0414975Z               "line": 402
2026-06-21T09:37:52.0415056Z             },
2026-06-21T09:37:52.0415137Z             {
2026-06-21T09:37:52.0415255Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.0415352Z               "line": 446
2026-06-21T09:37:52.0415443Z             }
2026-06-21T09:37:52.0415523Z           ]
2026-06-21T09:37:52.0415634Z         },
2026-06-21T09:37:52.0415733Z         "int": {
2026-06-21T09:37:52.0415828Z           "complete": false,
2026-06-21T09:37:52.0415914Z           "evidence": []
2026-06-21T09:37:52.0416006Z         },
2026-06-21T09:37:52.0416096Z         "unit": {
2026-06-21T09:37:52.0416186Z           "complete": true,
2026-06-21T09:37:52.0416273Z           "evidence": [
2026-06-21T09:37:52.0416362Z             {
2026-06-21T09:37:52.0416491Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.0416578Z               "line": 910
2026-06-21T09:37:52.0416668Z             }
2026-06-21T09:37:52.0416753Z           ]
2026-06-21T09:37:52.0416830Z         }
2026-06-21T09:37:52.0416922Z       }
2026-06-21T09:37:52.0417001Z     },
2026-06-21T09:37:52.0417091Z     {
2026-06-21T09:37:52.0417214Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T09:37:52.0417346Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T09:37:52.0417436Z       "requiredStages": [
2026-06-21T09:37:52.0417518Z         "impl",
2026-06-21T09:37:52.0417599Z         "unit"
2026-06-21T09:37:52.0417685Z       ],
2026-06-21T09:37:52.0417770Z       "stages": {
2026-06-21T09:37:52.0417851Z         "doc": {
2026-06-21T09:37:52.0417957Z           "complete": false,
2026-06-21T09:37:52.0418037Z           "evidence": []
2026-06-21T09:37:52.0418118Z         },
2026-06-21T09:37:52.0418305Z         "impl": {
2026-06-21T09:37:52.0418395Z           "complete": true,
2026-06-21T09:37:52.0418486Z           "evidence": [
2026-06-21T09:37:52.0418567Z             {
2026-06-21T09:37:52.0418695Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0418786Z               "line": 116
2026-06-21T09:37:52.0418868Z             },
2026-06-21T09:37:52.0419034Z             {
2026-06-21T09:37:52.0419150Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0419243Z               "line": 211
2026-06-21T09:37:52.0419320Z             }
2026-06-21T09:37:52.0419426Z           ]
2026-06-21T09:37:52.0419507Z         },
2026-06-21T09:37:52.0419702Z         "int": {
2026-06-21T09:37:52.0419789Z           "complete": false,
2026-06-21T09:37:52.0419878Z           "evidence": []
2026-06-21T09:37:52.0419953Z         },
2026-06-21T09:37:52.0420038Z         "unit": {
2026-06-21T09:37:52.0420144Z           "complete": true,
2026-06-21T09:37:52.0420226Z           "evidence": [
2026-06-21T09:37:52.0420311Z             {
2026-06-21T09:37:52.0420430Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0420521Z               "line": 388
2026-06-21T09:37:52.0420606Z             },
2026-06-21T09:37:52.0420687Z             {
2026-06-21T09:37:52.0420803Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0420884Z               "line": 469
2026-06-21T09:37:52.0420969Z             }
2026-06-21T09:37:52.0421055Z           ]
2026-06-21T09:37:52.0421131Z         }
2026-06-21T09:37:52.0421217Z       }
2026-06-21T09:37:52.0421297Z     },
2026-06-21T09:37:52.0421375Z     {
2026-06-21T09:37:52.0421503Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T09:37:52.0422577Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T09:37:52.0422687Z       "requiredStages": [
2026-06-21T09:37:52.0422774Z         "impl",
2026-06-21T09:37:52.0422858Z         "unit"
2026-06-21T09:37:52.0422944Z       ],
2026-06-21T09:37:52.0423031Z       "stages": {
2026-06-21T09:37:52.0423116Z         "doc": {
2026-06-21T09:37:52.0423201Z           "complete": true,
2026-06-21T09:37:52.0423293Z           "evidence": [
2026-06-21T09:37:52.0423374Z             {
2026-06-21T09:37:52.0423483Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0423574Z               "line": 206
2026-06-21T09:37:52.0423665Z             }
2026-06-21T09:37:52.0423755Z           ]
2026-06-21T09:37:52.0423831Z         },
2026-06-21T09:37:52.0423917Z         "impl": {
2026-06-21T09:37:52.0423999Z           "complete": true,
2026-06-21T09:37:52.0424094Z           "evidence": [
2026-06-21T09:37:52.0424174Z             {
2026-06-21T09:37:52.0424299Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0424398Z               "line": 691
2026-06-21T09:37:52.0424479Z             },
2026-06-21T09:37:52.0424562Z             {
2026-06-21T09:37:52.0424671Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0424766Z               "line": 791
2026-06-21T09:37:52.0424857Z             },
2026-06-21T09:37:52.0424939Z             {
2026-06-21T09:37:52.0425056Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0425141Z               "line": 1120
2026-06-21T09:37:52.0425227Z             },
2026-06-21T09:37:52.0425303Z             {
2026-06-21T09:37:52.0425429Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.0425535Z               "line": 184
2026-06-21T09:37:52.0425617Z             }
2026-06-21T09:37:52.0425702Z           ]
2026-06-21T09:37:52.0425792Z         },
2026-06-21T09:37:52.0425879Z         "int": {
2026-06-21T09:37:52.0425974Z           "complete": false,
2026-06-21T09:37:52.0426179Z           "evidence": []
2026-06-21T09:37:52.0426274Z         },
2026-06-21T09:37:52.0426365Z         "unit": {
2026-06-21T09:37:52.0426465Z           "complete": true,
2026-06-21T09:37:52.0426561Z           "evidence": [
2026-06-21T09:37:52.0426646Z             {
2026-06-21T09:37:52.0426756Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0426847Z               "line": 1169
2026-06-21T09:37:52.0426937Z             },
2026-06-21T09:37:52.0427022Z             {
2026-06-21T09:37:52.0427147Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T09:37:52.0427242Z               "line": 44
2026-06-21T09:37:52.0427400Z             },
2026-06-21T09:37:52.0427486Z             {
2026-06-21T09:37:52.0427608Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T09:37:52.0427712Z               "line": 52
2026-06-21T09:37:52.0427799Z             },
2026-06-21T09:37:52.0430724Z             {
2026-06-21T09:37:52.0430885Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T09:37:52.0430995Z               "line": 57
2026-06-21T09:37:52.0431086Z             },
2026-06-21T09:37:52.0431171Z             {
2026-06-21T09:37:52.0431316Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T09:37:52.0431410Z               "line": 54
2026-06-21T09:37:52.0431495Z             }
2026-06-21T09:37:52.0431582Z           ]
2026-06-21T09:37:52.0431668Z         }
2026-06-21T09:37:52.0431753Z       }
2026-06-21T09:37:52.0431839Z     },
2026-06-21T09:37:52.0431920Z     {
2026-06-21T09:37:52.0432053Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T09:37:52.0432274Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T09:37:52.0432378Z       "requiredStages": [
2026-06-21T09:37:52.0432468Z         "impl",
2026-06-21T09:37:52.0432555Z         "unit"
2026-06-21T09:37:52.0432636Z       ],
2026-06-21T09:37:52.0432725Z       "stages": {
2026-06-21T09:37:52.0432810Z         "doc": {
2026-06-21T09:37:52.0432916Z           "complete": false,
2026-06-21T09:37:52.0433000Z           "evidence": []
2026-06-21T09:37:52.0433085Z         },
2026-06-21T09:37:52.0433165Z         "impl": {
2026-06-21T09:37:52.0433261Z           "complete": true,
2026-06-21T09:37:52.0433348Z           "evidence": [
2026-06-21T09:37:52.0433437Z             {
2026-06-21T09:37:52.0433572Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0433653Z               "line": 26
2026-06-21T09:37:52.0433743Z             },
2026-06-21T09:37:52.0433824Z             {
2026-06-21T09:37:52.0433930Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0434033Z               "line": 135
2026-06-21T09:37:52.0434119Z             },
2026-06-21T09:37:52.0434206Z             {
2026-06-21T09:37:52.0434334Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:37:52.0434419Z               "line": 26
2026-06-21T09:37:52.0434502Z             },
2026-06-21T09:37:52.0434592Z             {
2026-06-21T09:37:52.0434716Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:37:52.0434807Z               "line": 237
2026-06-21T09:37:52.0434888Z             }
2026-06-21T09:37:52.0434973Z           ]
2026-06-21T09:37:52.0435063Z         },
2026-06-21T09:37:52.0435146Z         "int": {
2026-06-21T09:37:52.0435245Z           "complete": false,
2026-06-21T09:37:52.0435331Z           "evidence": []
2026-06-21T09:37:52.0435413Z         },
2026-06-21T09:37:52.0435499Z         "unit": {
2026-06-21T09:37:52.0435588Z           "complete": true,
2026-06-21T09:37:52.0435682Z           "evidence": [
2026-06-21T09:37:52.0435763Z             {
2026-06-21T09:37:52.0435886Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0435971Z               "line": 161
2026-06-21T09:37:52.0436057Z             },
2026-06-21T09:37:52.0436143Z             {
2026-06-21T09:37:52.0436262Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0436497Z               "line": 170
2026-06-21T09:37:52.0436582Z             },
2026-06-21T09:37:52.0436667Z             {
2026-06-21T09:37:52.0436782Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0436873Z               "line": 179
2026-06-21T09:37:52.0436957Z             },
2026-06-21T09:37:52.0437044Z             {
2026-06-21T09:37:52.0437149Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0437230Z               "line": 190
2026-06-21T09:37:52.0437311Z             },
2026-06-21T09:37:52.0437398Z             {
2026-06-21T09:37:52.0437506Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0437703Z               "line": 199
2026-06-21T09:37:52.0437789Z             },
2026-06-21T09:37:52.0437873Z             {
2026-06-21T09:37:52.0437984Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0438070Z               "line": 216
2026-06-21T09:37:52.0438159Z             },
2026-06-21T09:37:52.0438230Z             {
2026-06-21T09:37:52.0438349Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T09:37:52.0438439Z               "line": 242
2026-06-21T09:37:52.0438523Z             },
2026-06-21T09:37:52.0438609Z             {
2026-06-21T09:37:52.0438720Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.0438810Z               "line": 295
2026-06-21T09:37:52.0438890Z             },
2026-06-21T09:37:52.0439044Z             {
2026-06-21T09:37:52.0439148Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0439243Z               "line": 244
2026-06-21T09:37:52.0439325Z             },
2026-06-21T09:37:52.0439406Z             {
2026-06-21T09:37:52.0439539Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:37:52.0439626Z               "line": 265
2026-06-21T09:37:52.0439702Z             },
2026-06-21T09:37:52.0439788Z             {
2026-06-21T09:37:52.0439911Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:37:52.0440007Z               "line": 293
2026-06-21T09:37:52.0440088Z             },
2026-06-21T09:37:52.0440168Z             {
2026-06-21T09:37:52.0440294Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:37:52.0440378Z               "line": 317
2026-06-21T09:37:52.0440459Z             },
2026-06-21T09:37:52.0440536Z             {
2026-06-21T09:37:52.0440661Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T09:37:52.0440750Z               "line": 327
2026-06-21T09:37:52.0440827Z             },
2026-06-21T09:37:52.0440904Z             {
2026-06-21T09:37:52.0441017Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.0441112Z               "line": 540
2026-06-21T09:37:52.0441193Z             }
2026-06-21T09:37:52.0441284Z           ]
2026-06-21T09:37:52.0441365Z         }
2026-06-21T09:37:52.0441450Z       }
2026-06-21T09:37:52.0441531Z     },
2026-06-21T09:37:52.0441608Z     {
2026-06-21T09:37:52.0441745Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T09:37:52.0446437Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T09:37:52.0446756Z       "requiredStages": [],
2026-06-21T09:37:52.0446851Z       "stages": {
2026-06-21T09:37:52.0446936Z         "doc": {
2026-06-21T09:37:52.0447023Z           "complete": false,
2026-06-21T09:37:52.0447118Z           "evidence": []
2026-06-21T09:37:52.0447194Z         },
2026-06-21T09:37:52.0447275Z         "impl": {
2026-06-21T09:37:52.0447366Z           "complete": false,
2026-06-21T09:37:52.0447452Z           "evidence": []
2026-06-21T09:37:52.0447541Z         },
2026-06-21T09:37:52.0447624Z         "int": {
2026-06-21T09:37:52.0447719Z           "complete": false,
2026-06-21T09:37:52.0447800Z           "evidence": []
2026-06-21T09:37:52.0447885Z         },
2026-06-21T09:37:52.0447972Z         "unit": {
2026-06-21T09:37:52.0448067Z           "complete": false,
2026-06-21T09:37:52.0448148Z           "evidence": []
2026-06-21T09:37:52.0448234Z         }
2026-06-21T09:37:52.0448320Z       }
2026-06-21T09:37:52.0448400Z     },
2026-06-21T09:37:52.0448481Z     {
2026-06-21T09:37:52.0448597Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T09:37:52.0450205Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T09:37:52.0450313Z       "requiredStages": [
2026-06-21T09:37:52.0450394Z         "impl",
2026-06-21T09:37:52.0450476Z         "unit",
2026-06-21T09:37:52.0450563Z         "int"
2026-06-21T09:37:52.0450658Z       ],
2026-06-21T09:37:52.0450738Z       "stages": {
2026-06-21T09:37:52.0450820Z         "doc": {
2026-06-21T09:37:52.0450915Z           "complete": false,
2026-06-21T09:37:52.0450996Z           "evidence": []
2026-06-21T09:37:52.0451087Z         },
2026-06-21T09:37:52.0451164Z         "impl": {
2026-06-21T09:37:52.0451263Z           "complete": true,
2026-06-21T09:37:52.0451344Z           "evidence": [
2026-06-21T09:37:52.0451426Z             {
2026-06-21T09:37:52.0451550Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0451648Z               "line": 538
2026-06-21T09:37:52.0451728Z             },
2026-06-21T09:37:52.0451810Z             {
2026-06-21T09:37:52.0451930Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0452015Z               "line": 625
2026-06-21T09:37:52.0452101Z             },
2026-06-21T09:37:52.0452192Z             {
2026-06-21T09:37:52.0452339Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T09:37:52.0452421Z               "line": 21
2026-06-21T09:37:52.0452502Z             }
2026-06-21T09:37:52.0452587Z           ]
2026-06-21T09:37:52.0452678Z         },
2026-06-21T09:37:52.0452760Z         "int": {
2026-06-21T09:37:52.0452859Z           "complete": true,
2026-06-21T09:37:52.0452949Z           "evidence": [
2026-06-21T09:37:52.0453036Z             {
2026-06-21T09:37:52.0453178Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T09:37:52.0453264Z               "line": 236
2026-06-21T09:37:52.0453451Z             },
2026-06-21T09:37:52.0453531Z             {
2026-06-21T09:37:52.0453670Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T09:37:52.0453748Z               "line": 396
2026-06-21T09:37:52.0453831Z             },
2026-06-21T09:37:52.0453917Z             {
2026-06-21T09:37:52.0454069Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0454162Z               "line": 1496
2026-06-21T09:37:52.0454239Z             },
2026-06-21T09:37:52.0454324Z             {
2026-06-21T09:37:52.0454463Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0454658Z               "line": 1648
2026-06-21T09:37:52.0454740Z             }
2026-06-21T09:37:52.0454815Z           ]
2026-06-21T09:37:52.0454906Z         },
2026-06-21T09:37:52.0454988Z         "unit": {
2026-06-21T09:37:52.0455078Z           "complete": true,
2026-06-21T09:37:52.0455163Z           "evidence": [
2026-06-21T09:37:52.0455239Z             {
2026-06-21T09:37:52.0455364Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0455441Z               "line": 887
2026-06-21T09:37:52.0455521Z             }
2026-06-21T09:37:52.0455603Z           ]
2026-06-21T09:37:52.0455688Z         }
2026-06-21T09:37:52.0455770Z       }
2026-06-21T09:37:52.0455855Z     },
2026-06-21T09:37:52.0455932Z     {
2026-06-21T09:37:52.0456060Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T09:37:52.0456193Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T09:37:52.0456291Z       "requiredStages": [
2026-06-21T09:37:52.0456384Z         "impl",
2026-06-21T09:37:52.0456470Z         "unit"
2026-06-21T09:37:52.0456557Z       ],
2026-06-21T09:37:52.0456647Z       "stages": {
2026-06-21T09:37:52.0456737Z         "doc": {
2026-06-21T09:37:52.0456816Z           "complete": false,
2026-06-21T09:37:52.0456908Z           "evidence": []
2026-06-21T09:37:52.0456983Z         },
2026-06-21T09:37:52.0457072Z         "impl": {
2026-06-21T09:37:52.0457201Z           "complete": true,
2026-06-21T09:37:52.0457302Z           "evidence": [
2026-06-21T09:37:52.0457382Z             {
2026-06-21T09:37:52.0457492Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:37:52.0457574Z               "line": 25
2026-06-21T09:37:52.0457664Z             },
2026-06-21T09:37:52.0457749Z             {
2026-06-21T09:37:52.0457865Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.0457950Z               "line": 26
2026-06-21T09:37:52.0458026Z             },
2026-06-21T09:37:52.0458116Z             {
2026-06-21T09:37:52.0458227Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.0458326Z               "line": 159
2026-06-21T09:37:52.0458412Z             }
2026-06-21T09:37:52.0458489Z           ]
2026-06-21T09:37:52.0458570Z         },
2026-06-21T09:37:52.0458655Z         "int": {
2026-06-21T09:37:52.0458750Z           "complete": false,
2026-06-21T09:37:52.0458838Z           "evidence": []
2026-06-21T09:37:52.0458927Z         },
2026-06-21T09:37:52.0459109Z         "unit": {
2026-06-21T09:37:52.0459204Z           "complete": true,
2026-06-21T09:37:52.0459294Z           "evidence": [
2026-06-21T09:37:52.0459369Z             {
2026-06-21T09:37:52.0459489Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:37:52.0459573Z               "line": 188
2026-06-21T09:37:52.0459658Z             },
2026-06-21T09:37:52.0459744Z             {
2026-06-21T09:37:52.0459855Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:37:52.0459940Z               "line": 240
2026-06-21T09:37:52.0460020Z             },
2026-06-21T09:37:52.0460102Z             {
2026-06-21T09:37:52.0460221Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.0460316Z               "line": 186
2026-06-21T09:37:52.0460392Z             }
2026-06-21T09:37:52.0460479Z           ]
2026-06-21T09:37:52.0460564Z         }
2026-06-21T09:37:52.0460649Z       }
2026-06-21T09:37:52.0460737Z     },
2026-06-21T09:37:52.0460922Z     {
2026-06-21T09:37:52.0461027Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T09:37:52.0461189Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T09:37:52.0461284Z       "requiredStages": [
2026-06-21T09:37:52.0461376Z         "impl",
2026-06-21T09:37:52.0461461Z         "unit"
2026-06-21T09:37:52.0461536Z       ],
2026-06-21T09:37:52.0461622Z       "stages": {
2026-06-21T09:37:52.0461705Z         "doc": {
2026-06-21T09:37:52.0461790Z           "complete": false,
2026-06-21T09:37:52.0461875Z           "evidence": []
2026-06-21T09:37:52.0461962Z         },
2026-06-21T09:37:52.0462043Z         "impl": {
2026-06-21T09:37:52.0462237Z           "complete": true,
2026-06-21T09:37:52.0462313Z           "evidence": [
2026-06-21T09:37:52.0462395Z             {
2026-06-21T09:37:52.0462513Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0462604Z               "line": 48
2026-06-21T09:37:52.0462685Z             },
2026-06-21T09:37:52.0462776Z             {
2026-06-21T09:37:52.0462889Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0462972Z               "line": 55
2026-06-21T09:37:52.0463058Z             },
2026-06-21T09:37:52.0463139Z             {
2026-06-21T09:37:52.0463257Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0463344Z               "line": 74
2026-06-21T09:37:52.0463428Z             },
2026-06-21T09:37:52.0463514Z             {
2026-06-21T09:37:52.0463625Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0463711Z               "line": 91
2026-06-21T09:37:52.0463796Z             }
2026-06-21T09:37:52.0463891Z           ]
2026-06-21T09:37:52.0463978Z         },
2026-06-21T09:37:52.0464063Z         "int": {
2026-06-21T09:37:52.0464167Z           "complete": false,
2026-06-21T09:37:52.0464250Z           "evidence": []
2026-06-21T09:37:52.0464340Z         },
2026-06-21T09:37:52.0464410Z         "unit": {
2026-06-21T09:37:52.0464505Z           "complete": true,
2026-06-21T09:37:52.0464601Z           "evidence": [
2026-06-21T09:37:52.0464676Z             {
2026-06-21T09:37:52.0464789Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0464875Z               "line": 149
2026-06-21T09:37:52.0464961Z             },
2026-06-21T09:37:52.0465047Z             {
2026-06-21T09:37:52.0465151Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0465237Z               "line": 166
2026-06-21T09:37:52.0465413Z             },
2026-06-21T09:37:52.0465499Z             {
2026-06-21T09:37:52.0465619Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0465714Z               "line": 176
2026-06-21T09:37:52.0465800Z             },
2026-06-21T09:37:52.0465892Z             {
2026-06-21T09:37:52.0466010Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0466100Z               "line": 194
2026-06-21T09:37:52.0466187Z             },
2026-06-21T09:37:52.0466263Z             {
2026-06-21T09:37:52.0466377Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0466468Z               "line": 207
2026-06-21T09:37:52.0466550Z             }
2026-06-21T09:37:52.0466634Z           ]
2026-06-21T09:37:52.0466720Z         }
2026-06-21T09:37:52.0466802Z       }
2026-06-21T09:37:52.0466888Z     },
2026-06-21T09:37:52.0466972Z     {
2026-06-21T09:37:52.0467083Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T09:37:52.0467277Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T09:37:52.0467377Z       "requiredStages": [
2026-06-21T09:37:52.0467463Z         "impl",
2026-06-21T09:37:52.0467553Z         "unit"
2026-06-21T09:37:52.0467637Z       ],
2026-06-21T09:37:52.0467722Z       "stages": {
2026-06-21T09:37:52.0467800Z         "doc": {
2026-06-21T09:37:52.0467891Z           "complete": false,
2026-06-21T09:37:52.0467985Z           "evidence": []
2026-06-21T09:37:52.0468071Z         },
2026-06-21T09:37:52.0468243Z         "impl": {
2026-06-21T09:37:52.0468338Z           "complete": true,
2026-06-21T09:37:52.0468430Z           "evidence": [
2026-06-21T09:37:52.0468515Z             {
2026-06-21T09:37:52.0468638Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0468744Z               "line": 466
2026-06-21T09:37:52.0468825Z             },
2026-06-21T09:37:52.0468910Z             {
2026-06-21T09:37:52.0469111Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0469210Z               "line": 26
2026-06-21T09:37:52.0469287Z             }
2026-06-21T09:37:52.0469374Z           ]
2026-06-21T09:37:52.0469459Z         },
2026-06-21T09:37:52.0469650Z         "int": {
2026-06-21T09:37:52.0469741Z           "complete": false,
2026-06-21T09:37:52.0469830Z           "evidence": []
2026-06-21T09:37:52.0469915Z         },
2026-06-21T09:37:52.0470001Z         "unit": {
2026-06-21T09:37:52.0470101Z           "complete": true,
2026-06-21T09:37:52.0470185Z           "evidence": [
2026-06-21T09:37:52.0470275Z             {
2026-06-21T09:37:52.0470395Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0470486Z               "line": 150
2026-06-21T09:37:52.0470570Z             },
2026-06-21T09:37:52.0470657Z             {
2026-06-21T09:37:52.0470777Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0470867Z               "line": 208
2026-06-21T09:37:52.0470953Z             }
2026-06-21T09:37:52.0471029Z           ]
2026-06-21T09:37:52.0471115Z         }
2026-06-21T09:37:52.0471205Z       }
2026-06-21T09:37:52.0471282Z     },
2026-06-21T09:37:52.0471368Z     {
2026-06-21T09:37:52.0471501Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T09:37:52.0480499Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T09:37:52.0480854Z       "requiredStages": [
2026-06-21T09:37:52.0480950Z         "impl",
2026-06-21T09:37:52.0481032Z         "unit",
2026-06-21T09:37:52.0481117Z         "int"
2026-06-21T09:37:52.0481212Z       ],
2026-06-21T09:37:52.0481304Z       "stages": {
2026-06-21T09:37:52.0481389Z         "doc": {
2026-06-21T09:37:52.0481484Z           "complete": false,
2026-06-21T09:37:52.0481580Z           "evidence": []
2026-06-21T09:37:52.0481661Z         },
2026-06-21T09:37:52.0481751Z         "impl": {
2026-06-21T09:37:52.0481837Z           "complete": true,
2026-06-21T09:37:52.0481923Z           "evidence": [
2026-06-21T09:37:52.0481999Z             {
2026-06-21T09:37:52.0482123Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0482224Z               "line": 99
2026-06-21T09:37:52.0482304Z             },
2026-06-21T09:37:52.0482390Z             {
2026-06-21T09:37:52.0482525Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0482619Z               "line": 201
2026-06-21T09:37:52.0482705Z             }
2026-06-21T09:37:52.0482796Z           ]
2026-06-21T09:37:52.0482887Z         },
2026-06-21T09:37:52.0482971Z         "int": {
2026-06-21T09:37:52.0483067Z           "complete": true,
2026-06-21T09:37:52.0483150Z           "evidence": [
2026-06-21T09:37:52.0483239Z             {
2026-06-21T09:37:52.0483385Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0483482Z               "line": 737
2026-06-21T09:37:52.0483563Z             }
2026-06-21T09:37:52.0483653Z           ]
2026-06-21T09:37:52.0483743Z         },
2026-06-21T09:37:52.0483830Z         "unit": {
2026-06-21T09:37:52.0483920Z           "complete": true,
2026-06-21T09:37:52.0484010Z           "evidence": [
2026-06-21T09:37:52.0484097Z             {
2026-06-21T09:37:52.0484220Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0484315Z               "line": 517
2026-06-21T09:37:52.0484396Z             },
2026-06-21T09:37:52.0484483Z             {
2026-06-21T09:37:52.0484602Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0484682Z               "line": 576
2026-06-21T09:37:52.0484765Z             }
2026-06-21T09:37:52.0484845Z           ]
2026-06-21T09:37:52.0484926Z         }
2026-06-21T09:37:52.0485012Z       }
2026-06-21T09:37:52.0485098Z     },
2026-06-21T09:37:52.0485183Z     {
2026-06-21T09:37:52.0485302Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T09:37:52.0486591Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T09:37:52.0486702Z       "requiredStages": [
2026-06-21T09:37:52.0486777Z         "doc",
2026-06-21T09:37:52.0486867Z         "impl",
2026-06-21T09:37:52.0486954Z         "unit"
2026-06-21T09:37:52.0487040Z       ],
2026-06-21T09:37:52.0487126Z       "stages": {
2026-06-21T09:37:52.0487278Z         "doc": {
2026-06-21T09:37:52.0487379Z           "complete": true,
2026-06-21T09:37:52.0487469Z           "evidence": [
2026-06-21T09:37:52.0487559Z             {
2026-06-21T09:37:52.0487665Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0487754Z               "line": 214
2026-06-21T09:37:52.0487835Z             }
2026-06-21T09:37:52.0487918Z           ]
2026-06-21T09:37:52.0488004Z         },
2026-06-21T09:37:52.0488083Z         "impl": {
2026-06-21T09:37:52.0488184Z           "complete": true,
2026-06-21T09:37:52.0488262Z           "evidence": [
2026-06-21T09:37:52.0488338Z             {
2026-06-21T09:37:52.0488459Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0488626Z               "line": 56
2026-06-21T09:37:52.0488706Z             },
2026-06-21T09:37:52.0488790Z             {
2026-06-21T09:37:52.0488915Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0489067Z               "line": 580
2026-06-21T09:37:52.0489153Z             },
2026-06-21T09:37:52.0489235Z             {
2026-06-21T09:37:52.0489359Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0489463Z               "line": 36
2026-06-21T09:37:52.0489540Z             },
2026-06-21T09:37:52.0489621Z             {
2026-06-21T09:37:52.0489744Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0489830Z               "line": 59
2026-06-21T09:37:52.0489912Z             },
2026-06-21T09:37:52.0489997Z             {
2026-06-21T09:37:52.0490126Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0490208Z               "line": 83
2026-06-21T09:37:52.0490302Z             },
2026-06-21T09:37:52.0490393Z             {
2026-06-21T09:37:52.0490508Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0490603Z               "line": 140
2026-06-21T09:37:52.0490689Z             },
2026-06-21T09:37:52.0490775Z             {
2026-06-21T09:37:52.0490885Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0490984Z               "line": 159
2026-06-21T09:37:52.0491064Z             },
2026-06-21T09:37:52.0491136Z             {
2026-06-21T09:37:52.0491254Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0491334Z               "line": 384
2026-06-21T09:37:52.0491429Z             },
2026-06-21T09:37:52.0491511Z             {
2026-06-21T09:37:52.0491639Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0491734Z               "line": 535
2026-06-21T09:37:52.0491816Z             },
2026-06-21T09:37:52.0491897Z             {
2026-06-21T09:37:52.0492015Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0492117Z               "line": 581
2026-06-21T09:37:52.0492202Z             },
2026-06-21T09:37:52.0492287Z             {
2026-06-21T09:37:52.0492402Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0492483Z               "line": 300
2026-06-21T09:37:52.0492578Z             },
2026-06-21T09:37:52.0492659Z             {
2026-06-21T09:37:52.0492766Z               "path": "crates/spt/src/main.rs",
2026-06-21T09:37:52.0492855Z               "line": 42
2026-06-21T09:37:52.0492940Z             }
2026-06-21T09:37:52.0493032Z           ]
2026-06-21T09:37:52.0493113Z         },
2026-06-21T09:37:52.0493188Z         "int": {
2026-06-21T09:37:52.0493274Z           "complete": false,
2026-06-21T09:37:52.0493371Z           "evidence": []
2026-06-21T09:37:52.0493447Z         },
2026-06-21T09:37:52.0493536Z         "unit": {
2026-06-21T09:37:52.0493623Z           "complete": true,
2026-06-21T09:37:52.0493710Z           "evidence": [
2026-06-21T09:37:52.0493813Z             {
2026-06-21T09:37:52.0493936Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0494032Z               "line": 813
2026-06-21T09:37:52.0494114Z             },
2026-06-21T09:37:52.0494203Z             {
2026-06-21T09:37:52.0494322Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0494542Z               "line": 854
2026-06-21T09:37:52.0494628Z             },
2026-06-21T09:37:52.0494709Z             {
2026-06-21T09:37:52.0494833Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0494923Z               "line": 928
2026-06-21T09:37:52.0495015Z             }
2026-06-21T09:37:52.0495105Z           ]
2026-06-21T09:37:52.0495190Z         }
2026-06-21T09:37:52.0495267Z       }
2026-06-21T09:37:52.0495353Z     },
2026-06-21T09:37:52.0495443Z     {
2026-06-21T09:37:52.0495572Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T09:37:52.0500492Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T09:37:52.0500735Z       "requiredStages": [
2026-06-21T09:37:52.0500825Z         "impl",
2026-06-21T09:37:52.0500915Z         "unit",
2026-06-21T09:37:52.0501001Z         "int"
2026-06-21T09:37:52.0501088Z       ],
2026-06-21T09:37:52.0501163Z       "stages": {
2026-06-21T09:37:52.0501244Z         "doc": {
2026-06-21T09:37:52.0501350Z           "complete": false,
2026-06-21T09:37:52.0501445Z           "evidence": []
2026-06-21T09:37:52.0501520Z         },
2026-06-21T09:37:52.0501601Z         "impl": {
2026-06-21T09:37:52.0501701Z           "complete": true,
2026-06-21T09:37:52.0501786Z           "evidence": [
2026-06-21T09:37:52.0501875Z             {
2026-06-21T09:37:52.0501989Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.0502085Z               "line": 106
2026-06-21T09:37:52.0502171Z             }
2026-06-21T09:37:52.0502246Z           ]
2026-06-21T09:37:52.0502333Z         },
2026-06-21T09:37:52.0502409Z         "int": {
2026-06-21T09:37:52.0502514Z           "complete": true,
2026-06-21T09:37:52.0502609Z           "evidence": [
2026-06-21T09:37:52.0502691Z             {
2026-06-21T09:37:52.0502819Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T09:37:52.0502904Z               "line": 296
2026-06-21T09:37:52.0502987Z             }
2026-06-21T09:37:52.0503062Z           ]
2026-06-21T09:37:52.0503153Z         },
2026-06-21T09:37:52.0503234Z         "unit": {
2026-06-21T09:37:52.0503316Z           "complete": true,
2026-06-21T09:37:52.0503405Z           "evidence": [
2026-06-21T09:37:52.0503477Z             {
2026-06-21T09:37:52.0503607Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.0503815Z               "line": 464
2026-06-21T09:37:52.0503902Z             }
2026-06-21T09:37:52.0503979Z           ]
2026-06-21T09:37:52.0504068Z         }
2026-06-21T09:37:52.0504154Z       }
2026-06-21T09:37:52.0504241Z     },
2026-06-21T09:37:52.0504327Z     {
2026-06-21T09:37:52.0504434Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T09:37:52.0507730Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T09:37:52.0507922Z       "requiredStages": [
2026-06-21T09:37:52.0508007Z         "impl",
2026-06-21T09:37:52.0508084Z         "unit",
2026-06-21T09:37:52.0508184Z         "int"
2026-06-21T09:37:52.0508269Z       ],
2026-06-21T09:37:52.0508360Z       "stages": {
2026-06-21T09:37:52.0508433Z         "doc": {
2026-06-21T09:37:52.0508522Z           "complete": false,
2026-06-21T09:37:52.0508622Z           "evidence": []
2026-06-21T09:37:52.0508704Z         },
2026-06-21T09:37:52.0508790Z         "impl": {
2026-06-21T09:37:52.0508880Z           "complete": true,
2026-06-21T09:37:52.0509053Z           "evidence": [
2026-06-21T09:37:52.0509133Z             {
2026-06-21T09:37:52.0509271Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0509367Z               "line": 123
2026-06-21T09:37:52.0509448Z             },
2026-06-21T09:37:52.0509528Z             {
2026-06-21T09:37:52.0509637Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:37:52.0509737Z               "line": 134
2026-06-21T09:37:52.0509821Z             }
2026-06-21T09:37:52.0509906Z           ]
2026-06-21T09:37:52.0509982Z         },
2026-06-21T09:37:52.0510074Z         "int": {
2026-06-21T09:37:52.0510174Z           "complete": true,
2026-06-21T09:37:52.0510263Z           "evidence": [
2026-06-21T09:37:52.0510351Z             {
2026-06-21T09:37:52.0510465Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.0510554Z               "line": 312
2026-06-21T09:37:52.0510646Z             },
2026-06-21T09:37:52.0510723Z             {
2026-06-21T09:37:52.0510836Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.0510927Z               "line": 525
2026-06-21T09:37:52.0511008Z             }
2026-06-21T09:37:52.0511094Z           ]
2026-06-21T09:37:52.0511175Z         },
2026-06-21T09:37:52.0511261Z         "unit": {
2026-06-21T09:37:52.0511357Z           "complete": true,
2026-06-21T09:37:52.0511441Z           "evidence": [
2026-06-21T09:37:52.0511518Z             {
2026-06-21T09:37:52.0511643Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0511724Z               "line": 250
2026-06-21T09:37:52.0511824Z             }
2026-06-21T09:37:52.0511895Z           ]
2026-06-21T09:37:52.0511982Z         }
2026-06-21T09:37:52.0512062Z       }
2026-06-21T09:37:52.0512146Z     },
2026-06-21T09:37:52.0512237Z     {
2026-06-21T09:37:52.0512351Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T09:37:52.0514056Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T09:37:52.0514267Z       "requiredStages": [
2026-06-21T09:37:52.0514352Z         "impl",
2026-06-21T09:37:52.0514544Z         "unit"
2026-06-21T09:37:52.0514633Z       ],
2026-06-21T09:37:52.0514714Z       "stages": {
2026-06-21T09:37:52.0514802Z         "doc": {
2026-06-21T09:37:52.0514887Z           "complete": false,
2026-06-21T09:37:52.0514985Z           "evidence": []
2026-06-21T09:37:52.0515066Z         },
2026-06-21T09:37:52.0515166Z         "impl": {
2026-06-21T09:37:52.0515263Z           "complete": true,
2026-06-21T09:37:52.0515347Z           "evidence": [
2026-06-21T09:37:52.0515433Z             {
2026-06-21T09:37:52.0515562Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0515657Z               "line": 31
2026-06-21T09:37:52.0515743Z             }
2026-06-21T09:37:52.0515835Z           ]
2026-06-21T09:37:52.0515911Z         },
2026-06-21T09:37:52.0515995Z         "int": {
2026-06-21T09:37:52.0516096Z           "complete": false,
2026-06-21T09:37:52.0516187Z           "evidence": []
2026-06-21T09:37:52.0516277Z         },
2026-06-21T09:37:52.0516372Z         "unit": {
2026-06-21T09:37:52.0516465Z           "complete": true,
2026-06-21T09:37:52.0516558Z           "evidence": [
2026-06-21T09:37:52.0516635Z             {
2026-06-21T09:37:52.0516750Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0516840Z               "line": 181
2026-06-21T09:37:52.0516935Z             }
2026-06-21T09:37:52.0517021Z           ]
2026-06-21T09:37:52.0517099Z         }
2026-06-21T09:37:52.0517187Z       }
2026-06-21T09:37:52.0517264Z     },
2026-06-21T09:37:52.0517359Z     {
2026-06-21T09:37:52.0517477Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T09:37:52.0517637Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T09:37:52.0517733Z       "requiredStages": [
2026-06-21T09:37:52.0517824Z         "impl",
2026-06-21T09:37:52.0517909Z         "unit"
2026-06-21T09:37:52.0517986Z       ],
2026-06-21T09:37:52.0518077Z       "stages": {
2026-06-21T09:37:52.0518157Z         "doc": {
2026-06-21T09:37:52.0518262Z           "complete": false,
2026-06-21T09:37:52.0518344Z           "evidence": []
2026-06-21T09:37:52.0518434Z         },
2026-06-21T09:37:52.0518524Z         "impl": {
2026-06-21T09:37:52.0518625Z           "complete": true,
2026-06-21T09:37:52.0518720Z           "evidence": [
2026-06-21T09:37:52.0518801Z             {
2026-06-21T09:37:52.0518934Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0521721Z               "line": 49
2026-06-21T09:37:52.0521835Z             },
2026-06-21T09:37:52.0521921Z             {
2026-06-21T09:37:52.0522064Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0522160Z               "line": 81
2026-06-21T09:37:52.0522241Z             }
2026-06-21T09:37:52.0522321Z           ]
2026-06-21T09:37:52.0522403Z         },
2026-06-21T09:37:52.0522490Z         "int": {
2026-06-21T09:37:52.0522589Z           "complete": false,
2026-06-21T09:37:52.0522669Z           "evidence": []
2026-06-21T09:37:52.0522759Z         },
2026-06-21T09:37:52.0522854Z         "unit": {
2026-06-21T09:37:52.0522953Z           "complete": true,
2026-06-21T09:37:52.0523042Z           "evidence": [
2026-06-21T09:37:52.0523124Z             {
2026-06-21T09:37:52.0523249Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0523338Z               "line": 156
2026-06-21T09:37:52.0523554Z             },
2026-06-21T09:37:52.0523639Z             {
2026-06-21T09:37:52.0523758Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0523835Z               "line": 173
2026-06-21T09:37:52.0523925Z             },
2026-06-21T09:37:52.0524010Z             {
2026-06-21T09:37:52.0524121Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0524207Z               "line": 196
2026-06-21T09:37:52.0524288Z             }
2026-06-21T09:37:52.0524369Z           ]
2026-06-21T09:37:52.0524450Z         }
2026-06-21T09:37:52.0524535Z       }
2026-06-21T09:37:52.0524617Z     },
2026-06-21T09:37:52.0524698Z     {
2026-06-21T09:37:52.0524922Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T09:37:52.0525132Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T09:37:52.0525251Z       "requiredStages": [
2026-06-21T09:37:52.0525332Z         "impl",
2026-06-21T09:37:52.0525419Z         "unit"
2026-06-21T09:37:52.0525522Z       ],
2026-06-21T09:37:52.0525621Z       "stages": {
2026-06-21T09:37:52.0525703Z         "doc": {
2026-06-21T09:37:52.0525799Z           "complete": false,
2026-06-21T09:37:52.0525893Z           "evidence": []
2026-06-21T09:37:52.0525978Z         },
2026-06-21T09:37:52.0526094Z         "impl": {
2026-06-21T09:37:52.0526246Z           "complete": true,
2026-06-21T09:37:52.0526361Z           "evidence": [
2026-06-21T09:37:52.0526456Z             {
2026-06-21T09:37:52.0526570Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0526666Z               "line": 120
2026-06-21T09:37:52.0526743Z             }
2026-06-21T09:37:52.0526828Z           ]
2026-06-21T09:37:52.0526923Z         },
2026-06-21T09:37:52.0527005Z         "int": {
2026-06-21T09:37:52.0527128Z           "complete": false,
2026-06-21T09:37:52.0527219Z           "evidence": []
2026-06-21T09:37:52.0527306Z         },
2026-06-21T09:37:52.0527391Z         "unit": {
2026-06-21T09:37:52.0527486Z           "complete": true,
2026-06-21T09:37:52.0527591Z           "evidence": [
2026-06-21T09:37:52.0527673Z             {
2026-06-21T09:37:52.0527795Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0527875Z               "line": 212
2026-06-21T09:37:52.0527957Z             },
2026-06-21T09:37:52.0528042Z             {
2026-06-21T09:37:52.0528160Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0528246Z               "line": 221
2026-06-21T09:37:52.0528327Z             },
2026-06-21T09:37:52.0528412Z             {
2026-06-21T09:37:52.0528521Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0528608Z               "line": 229
2026-06-21T09:37:52.0528699Z             },
2026-06-21T09:37:52.0528779Z             {
2026-06-21T09:37:52.0528889Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0529051Z               "line": 239
2026-06-21T09:37:52.0529137Z             },
2026-06-21T09:37:52.0529214Z             {
2026-06-21T09:37:52.0529338Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T09:37:52.0529418Z               "line": 249
2026-06-21T09:37:52.0529499Z             }
2026-06-21T09:37:52.0529586Z           ]
2026-06-21T09:37:52.0529661Z         }
2026-06-21T09:37:52.0529747Z       }
2026-06-21T09:37:52.0529819Z     },
2026-06-21T09:37:52.0529906Z     {
2026-06-21T09:37:52.0530019Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T09:37:52.0530182Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T09:37:52.0530281Z       "requiredStages": [
2026-06-21T09:37:52.0530362Z         "impl",
2026-06-21T09:37:52.0530439Z         "unit"
2026-06-21T09:37:52.0530526Z       ],
2026-06-21T09:37:52.0530615Z       "stages": {
2026-06-21T09:37:52.0530696Z         "doc": {
2026-06-21T09:37:52.0530795Z           "complete": false,
2026-06-21T09:37:52.0530881Z           "evidence": []
2026-06-21T09:37:52.0530955Z         },
2026-06-21T09:37:52.0531031Z         "impl": {
2026-06-21T09:37:52.0531213Z           "complete": true,
2026-06-21T09:37:52.0531303Z           "evidence": [
2026-06-21T09:37:52.0531388Z             {
2026-06-21T09:37:52.0531499Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.0531590Z               "line": 14
2026-06-21T09:37:52.0531670Z             },
2026-06-21T09:37:52.0531756Z             {
2026-06-21T09:37:52.0531866Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.0531947Z               "line": 63
2026-06-21T09:37:52.0532027Z             }
2026-06-21T09:37:52.0532120Z           ]
2026-06-21T09:37:52.0532209Z         },
2026-06-21T09:37:52.0532290Z         "int": {
2026-06-21T09:37:52.0532481Z           "complete": false,
2026-06-21T09:37:52.0532571Z           "evidence": []
2026-06-21T09:37:52.0532657Z         },
2026-06-21T09:37:52.0532740Z         "unit": {
2026-06-21T09:37:52.0532839Z           "complete": true,
2026-06-21T09:37:52.0532939Z           "evidence": [
2026-06-21T09:37:52.0533021Z             {
2026-06-21T09:37:52.0533135Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.0533225Z               "line": 164
2026-06-21T09:37:52.0533309Z             },
2026-06-21T09:37:52.0533391Z             {
2026-06-21T09:37:52.0533499Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.0533593Z               "line": 198
2026-06-21T09:37:52.0533669Z             },
2026-06-21T09:37:52.0533761Z             {
2026-06-21T09:37:52.0533861Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.0533946Z               "line": 220
2026-06-21T09:37:52.0534028Z             }
2026-06-21T09:37:52.0534119Z           ]
2026-06-21T09:37:52.0534208Z         }
2026-06-21T09:37:52.0534280Z       }
2026-06-21T09:37:52.0534371Z     },
2026-06-21T09:37:52.0534443Z     {
2026-06-21T09:37:52.0534556Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T09:37:52.0535878Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T09:37:52.0535983Z       "requiredStages": [],
2026-06-21T09:37:52.0536077Z       "stages": {
2026-06-21T09:37:52.0536162Z         "doc": {
2026-06-21T09:37:52.0536258Z           "complete": true,
2026-06-21T09:37:52.0536344Z           "evidence": [
2026-06-21T09:37:52.0536435Z             {
2026-06-21T09:37:52.0536548Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0536645Z               "line": 165
2026-06-21T09:37:52.0536726Z             }
2026-06-21T09:37:52.0536810Z           ]
2026-06-21T09:37:52.0536898Z         },
2026-06-21T09:37:52.0536974Z         "impl": {
2026-06-21T09:37:52.0537060Z           "complete": false,
2026-06-21T09:37:52.0537164Z           "evidence": []
2026-06-21T09:37:52.0537236Z         },
2026-06-21T09:37:52.0537335Z         "int": {
2026-06-21T09:37:52.0537454Z           "complete": false,
2026-06-21T09:37:52.0537542Z           "evidence": []
2026-06-21T09:37:52.0537641Z         },
2026-06-21T09:37:52.0537731Z         "unit": {
2026-06-21T09:37:52.0537832Z           "complete": false,
2026-06-21T09:37:52.0537914Z           "evidence": []
2026-06-21T09:37:52.0538007Z         }
2026-06-21T09:37:52.0538088Z       }
2026-06-21T09:37:52.0538176Z     },
2026-06-21T09:37:52.0538257Z     {
2026-06-21T09:37:52.0538374Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T09:37:52.0538593Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T09:37:52.0538691Z       "requiredStages": [
2026-06-21T09:37:52.0538771Z         "impl",
2026-06-21T09:37:52.0538853Z         "unit"
2026-06-21T09:37:52.0538931Z       ],
2026-06-21T09:37:52.0539115Z       "stages": {
2026-06-21T09:37:52.0539329Z         "doc": {
2026-06-21T09:37:52.0539430Z           "complete": false,
2026-06-21T09:37:52.0539517Z           "evidence": []
2026-06-21T09:37:52.0539603Z         },
2026-06-21T09:37:52.0539682Z         "impl": {
2026-06-21T09:37:52.0539769Z           "complete": true,
2026-06-21T09:37:52.0539851Z           "evidence": [
2026-06-21T09:37:52.0539936Z             {
2026-06-21T09:37:52.0540064Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0540146Z               "line": 76
2026-06-21T09:37:52.0540226Z             },
2026-06-21T09:37:52.0540307Z             {
2026-06-21T09:37:52.0540418Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0540594Z               "line": 167
2026-06-21T09:37:52.0540684Z             },
2026-06-21T09:37:52.0540767Z             {
2026-06-21T09:37:52.0540870Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0540951Z               "line": 233
2026-06-21T09:37:52.0541029Z             },
2026-06-21T09:37:52.0541120Z             {
2026-06-21T09:37:52.0541227Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0541321Z               "line": 272
2026-06-21T09:37:52.0541408Z             }
2026-06-21T09:37:52.0541483Z           ]
2026-06-21T09:37:52.0541573Z         },
2026-06-21T09:37:52.0541653Z         "int": {
2026-06-21T09:37:52.0541735Z           "complete": false,
2026-06-21T09:37:52.0541826Z           "evidence": []
2026-06-21T09:37:52.0541901Z         },
2026-06-21T09:37:52.0541987Z         "unit": {
2026-06-21T09:37:52.0542069Z           "complete": true,
2026-06-21T09:37:52.0542169Z           "evidence": [
2026-06-21T09:37:52.0542249Z             {
2026-06-21T09:37:52.0542375Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0542460Z               "line": 321
2026-06-21T09:37:52.0542545Z             },
2026-06-21T09:37:52.0542627Z             {
2026-06-21T09:37:52.0542727Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0542841Z               "line": 329
2026-06-21T09:37:52.0542922Z             },
2026-06-21T09:37:52.0543014Z             {
2026-06-21T09:37:52.0543117Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0543203Z               "line": 356
2026-06-21T09:37:52.0543290Z             },
2026-06-21T09:37:52.0543366Z             {
2026-06-21T09:37:52.0543480Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0543566Z               "line": 395
2026-06-21T09:37:52.0543648Z             },
2026-06-21T09:37:52.0543733Z             {
2026-06-21T09:37:52.0543841Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0543936Z               "line": 406
2026-06-21T09:37:52.0544026Z             },
2026-06-21T09:37:52.0544116Z             {
2026-06-21T09:37:52.0544220Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0544306Z               "line": 418
2026-06-21T09:37:52.0544397Z             },
2026-06-21T09:37:52.0544473Z             {
2026-06-21T09:37:52.0544598Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T09:37:52.0544674Z               "line": 442
2026-06-21T09:37:52.0544754Z             }
2026-06-21T09:37:52.0544840Z           ]
2026-06-21T09:37:52.0544927Z         }
2026-06-21T09:37:52.0545008Z       }
2026-06-21T09:37:52.0545093Z     },
2026-06-21T09:37:52.0545179Z     {
2026-06-21T09:37:52.0545284Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T09:37:52.0545426Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T09:37:52.0545518Z       "requiredStages": [
2026-06-21T09:37:52.0545604Z         "impl",
2026-06-21T09:37:52.0545689Z         "int"
2026-06-21T09:37:52.0545798Z       ],
2026-06-21T09:37:52.0545886Z       "stages": {
2026-06-21T09:37:52.0545970Z         "doc": {
2026-06-21T09:37:52.0546066Z           "complete": false,
2026-06-21T09:37:52.0546157Z           "evidence": []
2026-06-21T09:37:52.0546243Z         },
2026-06-21T09:37:52.0546337Z         "impl": {
2026-06-21T09:37:52.0546511Z           "complete": true,
2026-06-21T09:37:52.0546595Z           "evidence": [
2026-06-21T09:37:52.0546675Z             {
2026-06-21T09:37:52.0546794Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0546881Z               "line": 22
2026-06-21T09:37:52.0546971Z             }
2026-06-21T09:37:52.0547061Z           ]
2026-06-21T09:37:52.0547148Z         },
2026-06-21T09:37:52.0547234Z         "int": {
2026-06-21T09:37:52.0547323Z           "complete": true,
2026-06-21T09:37:52.0547409Z           "evidence": [
2026-06-21T09:37:52.0547496Z             {
2026-06-21T09:37:52.0547624Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T09:37:52.0547792Z               "line": 18
2026-06-21T09:37:52.0547877Z             }
2026-06-21T09:37:52.0547958Z           ]
2026-06-21T09:37:52.0548043Z         },
2026-06-21T09:37:52.0548130Z         "unit": {
2026-06-21T09:37:52.0548225Z           "complete": false,
2026-06-21T09:37:52.0548320Z           "evidence": []
2026-06-21T09:37:52.0548402Z         }
2026-06-21T09:37:52.0548488Z       }
2026-06-21T09:37:52.0548568Z     },
2026-06-21T09:37:52.0548649Z     {
2026-06-21T09:37:52.0548769Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T09:37:52.0549039Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T09:37:52.0549125Z       "requiredStages": [
2026-06-21T09:37:52.0549218Z         "impl",
2026-06-21T09:37:52.0549299Z         "unit"
2026-06-21T09:37:52.0549385Z       ],
2026-06-21T09:37:52.0549461Z       "stages": {
2026-06-21T09:37:52.0549552Z         "doc": {
2026-06-21T09:37:52.0549637Z           "complete": false,
2026-06-21T09:37:52.0549738Z           "evidence": []
2026-06-21T09:37:52.0549819Z         },
2026-06-21T09:37:52.0549895Z         "impl": {
2026-06-21T09:37:52.0549995Z           "complete": true,
2026-06-21T09:37:52.0550077Z           "evidence": [
2026-06-21T09:37:52.0550158Z             {
2026-06-21T09:37:52.0550281Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0550373Z               "line": 465
2026-06-21T09:37:52.0550458Z             },
2026-06-21T09:37:52.0550538Z             {
2026-06-21T09:37:52.0550649Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0550730Z               "line": 27
2026-06-21T09:37:52.0550816Z             }
2026-06-21T09:37:52.0550896Z           ]
2026-06-21T09:37:52.0550983Z         },
2026-06-21T09:37:52.0551069Z         "int": {
2026-06-21T09:37:52.0551159Z           "complete": false,
2026-06-21T09:37:52.0551249Z           "evidence": []
2026-06-21T09:37:52.0551336Z         },
2026-06-21T09:37:52.0551411Z         "unit": {
2026-06-21T09:37:52.0551506Z           "complete": true,
2026-06-21T09:37:52.0551594Z           "evidence": [
2026-06-21T09:37:52.0551680Z             {
2026-06-21T09:37:52.0551796Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0551891Z               "line": 990
2026-06-21T09:37:52.0551978Z             },
2026-06-21T09:37:52.0552076Z             {
2026-06-21T09:37:52.0552180Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0552271Z               "line": 181
2026-06-21T09:37:52.0552348Z             }
2026-06-21T09:37:52.0552433Z           ]
2026-06-21T09:37:52.0552518Z         }
2026-06-21T09:37:52.0552601Z       }
2026-06-21T09:37:52.0552686Z     },
2026-06-21T09:37:52.0552771Z     {
2026-06-21T09:37:52.0552891Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T09:37:52.0553053Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T09:37:52.0553143Z       "requiredStages": [
2026-06-21T09:37:52.0553225Z         "impl",
2026-06-21T09:37:52.0553315Z         "unit"
2026-06-21T09:37:52.0553396Z       ],
2026-06-21T09:37:52.0553487Z       "stages": {
2026-06-21T09:37:52.0553569Z         "doc": {
2026-06-21T09:37:52.0553663Z           "complete": false,
2026-06-21T09:37:52.0553754Z           "evidence": []
2026-06-21T09:37:52.0553831Z         },
2026-06-21T09:37:52.0554025Z         "impl": {
2026-06-21T09:37:52.0554126Z           "complete": true,
2026-06-21T09:37:52.0554218Z           "evidence": [
2026-06-21T09:37:52.0554297Z             {
2026-06-21T09:37:52.0554424Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0554516Z               "line": 73
2026-06-21T09:37:52.0554605Z             },
2026-06-21T09:37:52.0554690Z             {
2026-06-21T09:37:52.0554804Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0554881Z               "line": 972
2026-06-21T09:37:52.0554962Z             },
2026-06-21T09:37:52.0555052Z             {
2026-06-21T09:37:52.0555163Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:37:52.0555352Z               "line": 20
2026-06-21T09:37:52.0555439Z             },
2026-06-21T09:37:52.0555515Z             {
2026-06-21T09:37:52.0555625Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:37:52.0555719Z               "line": 100
2026-06-21T09:37:52.0555802Z             },
2026-06-21T09:37:52.0555887Z             {
2026-06-21T09:37:52.0556006Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0556092Z               "line": 603
2026-06-21T09:37:52.0556178Z             },
2026-06-21T09:37:52.0556263Z             {
2026-06-21T09:37:52.0556388Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:37:52.0556479Z               "line": 68
2026-06-21T09:37:52.0556559Z             },
2026-06-21T09:37:52.0556645Z             {
2026-06-21T09:37:52.0556756Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:37:52.0556840Z               "line": 80
2026-06-21T09:37:52.0556931Z             }
2026-06-21T09:37:52.0557013Z           ]
2026-06-21T09:37:52.0557099Z         },
2026-06-21T09:37:52.0557183Z         "int": {
2026-06-21T09:37:52.0557278Z           "complete": true,
2026-06-21T09:37:52.0557363Z           "evidence": [
2026-06-21T09:37:52.0557455Z             {
2026-06-21T09:37:52.0557560Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T09:37:52.0557655Z               "line": 44
2026-06-21T09:37:52.0557736Z             }
2026-06-21T09:37:52.0557817Z           ]
2026-06-21T09:37:52.0557898Z         },
2026-06-21T09:37:52.0557984Z         "unit": {
2026-06-21T09:37:52.0558075Z           "complete": true,
2026-06-21T09:37:52.0558161Z           "evidence": [
2026-06-21T09:37:52.0558241Z             {
2026-06-21T09:37:52.0558361Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0558447Z               "line": 1181
2026-06-21T09:37:52.0558527Z             },
2026-06-21T09:37:52.0558598Z             {
2026-06-21T09:37:52.0558723Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.0558804Z               "line": 1197
2026-06-21T09:37:52.0558899Z             },
2026-06-21T09:37:52.0559057Z             {
2026-06-21T09:37:52.0559185Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0559281Z               "line": 2439
2026-06-21T09:37:52.0559372Z             },
2026-06-21T09:37:52.0559457Z             {
2026-06-21T09:37:52.0559570Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:37:52.0559661Z               "line": 152
2026-06-21T09:37:52.0559746Z             },
2026-06-21T09:37:52.0559825Z             {
2026-06-21T09:37:52.0559940Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:37:52.0560022Z               "line": 175
2026-06-21T09:37:52.0560112Z             },
2026-06-21T09:37:52.0560197Z             {
2026-06-21T09:37:52.0560303Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:37:52.0560389Z               "line": 186
2026-06-21T09:37:52.0560469Z             },
2026-06-21T09:37:52.0560550Z             {
2026-06-21T09:37:52.0560666Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:37:52.0560751Z               "line": 202
2026-06-21T09:37:52.0560841Z             },
2026-06-21T09:37:52.0560923Z             {
2026-06-21T09:37:52.0561136Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T09:37:52.0561214Z               "line": 216
2026-06-21T09:37:52.0561304Z             },
2026-06-21T09:37:52.0561390Z             {
2026-06-21T09:37:52.0561509Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T09:37:52.0561596Z               "line": 137
2026-06-21T09:37:52.0561680Z             },
2026-06-21T09:37:52.0561766Z             {
2026-06-21T09:37:52.0561868Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0561958Z               "line": 8152
2026-06-21T09:37:52.0562033Z             },
2026-06-21T09:37:52.0562120Z             {
2026-06-21T09:37:52.0562347Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T09:37:52.0562428Z               "line": 30
2026-06-21T09:37:52.0562509Z             },
2026-06-21T09:37:52.0562594Z             {
2026-06-21T09:37:52.0562702Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T09:37:52.0562788Z               "line": 73
2026-06-21T09:37:52.0562884Z             }
2026-06-21T09:37:52.0562970Z           ]
2026-06-21T09:37:52.0563050Z         }
2026-06-21T09:37:52.0563137Z       }
2026-06-21T09:37:52.0563209Z     },
2026-06-21T09:37:52.0563294Z     {
2026-06-21T09:37:52.0563417Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T09:37:52.0567419Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T09:37:52.0567549Z       "requiredStages": [
2026-06-21T09:37:52.0567631Z         "impl",
2026-06-21T09:37:52.0567715Z         "unit",
2026-06-21T09:37:52.0567795Z         "int"
2026-06-21T09:37:52.0567876Z       ],
2026-06-21T09:37:52.0567958Z       "stages": {
2026-06-21T09:37:52.0568040Z         "doc": {
2026-06-21T09:37:52.0568129Z           "complete": false,
2026-06-21T09:37:52.0568219Z           "evidence": []
2026-06-21T09:37:52.0568306Z         },
2026-06-21T09:37:52.0568392Z         "impl": {
2026-06-21T09:37:52.0568491Z           "complete": true,
2026-06-21T09:37:52.0568573Z           "evidence": [
2026-06-21T09:37:52.0568654Z             {
2026-06-21T09:37:52.0568801Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0568887Z               "line": 510
2026-06-21T09:37:52.0569059Z             },
2026-06-21T09:37:52.0569140Z             {
2026-06-21T09:37:52.0569269Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0569364Z               "line": 704
2026-06-21T09:37:52.0569455Z             }
2026-06-21T09:37:52.0569537Z           ]
2026-06-21T09:37:52.0569617Z         },
2026-06-21T09:37:52.0569702Z         "int": {
2026-06-21T09:37:52.0569788Z           "complete": true,
2026-06-21T09:37:52.0569890Z           "evidence": [
2026-06-21T09:37:52.0569965Z             {
2026-06-21T09:37:52.0570203Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0570301Z               "line": 1119
2026-06-21T09:37:52.0570390Z             },
2026-06-21T09:37:52.0570471Z             {
2026-06-21T09:37:52.0570587Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T09:37:52.0570677Z               "line": 312
2026-06-21T09:37:52.0570757Z             }
2026-06-21T09:37:52.0570844Z           ]
2026-06-21T09:37:52.0570925Z         },
2026-06-21T09:37:52.0571006Z         "unit": {
2026-06-21T09:37:52.0571101Z           "complete": true,
2026-06-21T09:37:52.0571188Z           "evidence": [
2026-06-21T09:37:52.0571368Z             {
2026-06-21T09:37:52.0571488Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0571578Z               "line": 821
2026-06-21T09:37:52.0571673Z             }
2026-06-21T09:37:52.0571754Z           ]
2026-06-21T09:37:52.0571841Z         }
2026-06-21T09:37:52.0571931Z       }
2026-06-21T09:37:52.0572016Z     },
2026-06-21T09:37:52.0572099Z     {
2026-06-21T09:37:52.0572207Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T09:37:52.0572456Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T09:37:52.0572555Z       "requiredStages": [
2026-06-21T09:37:52.0572637Z         "impl",
2026-06-21T09:37:52.0572723Z         "unit"
2026-06-21T09:37:52.0572814Z       ],
2026-06-21T09:37:52.0572898Z       "stages": {
2026-06-21T09:37:52.0572988Z         "doc": {
2026-06-21T09:37:52.0573084Z           "complete": true,
2026-06-21T09:37:52.0573178Z           "evidence": [
2026-06-21T09:37:52.0573271Z             {
2026-06-21T09:37:52.0573382Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0573477Z               "line": 133
2026-06-21T09:37:52.0573558Z             }
2026-06-21T09:37:52.0573644Z           ]
2026-06-21T09:37:52.0573721Z         },
2026-06-21T09:37:52.0573806Z         "impl": {
2026-06-21T09:37:52.0573906Z           "complete": true,
2026-06-21T09:37:52.0573992Z           "evidence": [
2026-06-21T09:37:52.0574084Z             {
2026-06-21T09:37:52.0574193Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.0574278Z               "line": 65
2026-06-21T09:37:52.0574369Z             },
2026-06-21T09:37:52.0574450Z             {
2026-06-21T09:37:52.0574569Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:37:52.0574661Z               "line": 17
2026-06-21T09:37:52.0574751Z             },
2026-06-21T09:37:52.0574831Z             {
2026-06-21T09:37:52.0574956Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0575052Z               "line": 146
2026-06-21T09:37:52.0575136Z             },
2026-06-21T09:37:52.0575222Z             {
2026-06-21T09:37:52.0575338Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0575423Z               "line": 310
2026-06-21T09:37:52.0575503Z             },
2026-06-21T09:37:52.0575593Z             {
2026-06-21T09:37:52.0575703Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0575786Z               "line": 441
2026-06-21T09:37:52.0575877Z             },
2026-06-21T09:37:52.0575963Z             {
2026-06-21T09:37:52.0576078Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.0576163Z               "line": 32
2026-06-21T09:37:52.0576254Z             },
2026-06-21T09:37:52.0576340Z             {
2026-06-21T09:37:52.0576444Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0576534Z               "line": 1283
2026-06-21T09:37:52.0576622Z             },
2026-06-21T09:37:52.0576707Z             {
2026-06-21T09:37:52.0576816Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0576908Z               "line": 6161
2026-06-21T09:37:52.0576998Z             },
2026-06-21T09:37:52.0577083Z             {
2026-06-21T09:37:52.0577188Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0577271Z               "line": 6443
2026-06-21T09:37:52.0577436Z             }
2026-06-21T09:37:52.0577523Z           ]
2026-06-21T09:37:52.0577609Z         },
2026-06-21T09:37:52.0577698Z         "int": {
2026-06-21T09:37:52.0577784Z           "complete": false,
2026-06-21T09:37:52.0577876Z           "evidence": []
2026-06-21T09:37:52.0577961Z         },
2026-06-21T09:37:52.0578042Z         "unit": {
2026-06-21T09:37:52.0578138Z           "complete": true,
2026-06-21T09:37:52.0578215Z           "evidence": [
2026-06-21T09:37:52.0578304Z             {
2026-06-21T09:37:52.0578408Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:37:52.0578489Z               "line": 94
2026-06-21T09:37:52.0578571Z             },
2026-06-21T09:37:52.0578732Z             {
2026-06-21T09:37:52.0578842Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:37:52.0578938Z               "line": 111
2026-06-21T09:37:52.0579094Z             },
2026-06-21T09:37:52.0579177Z             {
2026-06-21T09:37:52.0579290Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:37:52.0579385Z               "line": 124
2026-06-21T09:37:52.0579477Z             },
2026-06-21T09:37:52.0579567Z             {
2026-06-21T09:37:52.0579671Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:37:52.0579767Z               "line": 134
2026-06-21T09:37:52.0579848Z             },
2026-06-21T09:37:52.0579929Z             {
2026-06-21T09:37:52.0580029Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:37:52.0580126Z               "line": 144
2026-06-21T09:37:52.0580206Z             },
2026-06-21T09:37:52.0580291Z             {
2026-06-21T09:37:52.0580402Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T09:37:52.0580497Z               "line": 156
2026-06-21T09:37:52.0580587Z             },
2026-06-21T09:37:52.0580667Z             {
2026-06-21T09:37:52.0580791Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0580875Z               "line": 746
2026-06-21T09:37:52.0580960Z             },
2026-06-21T09:37:52.0581051Z             {
2026-06-21T09:37:52.0581171Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.0581265Z               "line": 309
2026-06-21T09:37:52.0581337Z             }
2026-06-21T09:37:52.0581428Z           ]
2026-06-21T09:37:52.0581514Z         }
2026-06-21T09:37:52.0581590Z       }
2026-06-21T09:37:52.0581680Z     },
2026-06-21T09:37:52.0581762Z     {
2026-06-21T09:37:52.0581871Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T09:37:52.0582000Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T09:37:52.0582100Z       "requiredStages": [
2026-06-21T09:37:52.0582190Z         "impl",
2026-06-21T09:37:52.0582271Z         "unit"
2026-06-21T09:37:52.0582359Z       ],
2026-06-21T09:37:52.0582438Z       "stages": {
2026-06-21T09:37:52.0582529Z         "doc": {
2026-06-21T09:37:52.0582610Z           "complete": false,
2026-06-21T09:37:52.0582697Z           "evidence": []
2026-06-21T09:37:52.0582787Z         },
2026-06-21T09:37:52.0582872Z         "impl": {
2026-06-21T09:37:52.0582959Z           "complete": true,
2026-06-21T09:37:52.0583045Z           "evidence": [
2026-06-21T09:37:52.0583134Z             {
2026-06-21T09:37:52.0583240Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.0583336Z               "line": 128
2026-06-21T09:37:52.0583421Z             }
2026-06-21T09:37:52.0583501Z           ]
2026-06-21T09:37:52.0583586Z         },
2026-06-21T09:37:52.0583672Z         "int": {
2026-06-21T09:37:52.0583766Z           "complete": false,
2026-06-21T09:37:52.0583846Z           "evidence": []
2026-06-21T09:37:52.0583937Z         },
2026-06-21T09:37:52.0584014Z         "unit": {
2026-06-21T09:37:52.0584119Z           "complete": true,
2026-06-21T09:37:52.0584214Z           "evidence": [
2026-06-21T09:37:52.0584300Z             {
2026-06-21T09:37:52.0584410Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.0584499Z               "line": 205
2026-06-21T09:37:52.0584582Z             }
2026-06-21T09:37:52.0584767Z           ]
2026-06-21T09:37:52.0584843Z         }
2026-06-21T09:37:52.0584929Z       }
2026-06-21T09:37:52.0585001Z     },
2026-06-21T09:37:52.0585091Z     {
2026-06-21T09:37:52.0585206Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T09:37:52.0585358Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T09:37:52.0585458Z       "requiredStages": [
2026-06-21T09:37:52.0585545Z         "impl",
2026-06-21T09:37:52.0585626Z         "unit"
2026-06-21T09:37:52.0585710Z       ],
2026-06-21T09:37:52.0585792Z       "stages": {
2026-06-21T09:37:52.0585879Z         "doc": {
2026-06-21T09:37:52.0585974Z           "complete": false,
2026-06-21T09:37:52.0586158Z           "evidence": []
2026-06-21T09:37:52.0586244Z         },
2026-06-21T09:37:52.0586333Z         "impl": {
2026-06-21T09:37:52.0586418Z           "complete": true,
2026-06-21T09:37:52.0586509Z           "evidence": [
2026-06-21T09:37:52.0586595Z             {
2026-06-21T09:37:52.0586708Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0586809Z               "line": 367
2026-06-21T09:37:52.0586896Z             },
2026-06-21T09:37:52.0586981Z             {
2026-06-21T09:37:52.0587095Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0587191Z               "line": 378
2026-06-21T09:37:52.0587277Z             },
2026-06-21T09:37:52.0587366Z             {
2026-06-21T09:37:52.0587482Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0587567Z               "line": 396
2026-06-21T09:37:52.0587658Z             }
2026-06-21T09:37:52.0587739Z           ]
2026-06-21T09:37:52.0587826Z         },
2026-06-21T09:37:52.0587915Z         "int": {
2026-06-21T09:37:52.0588010Z           "complete": false,
2026-06-21T09:37:52.0588107Z           "evidence": []
2026-06-21T09:37:52.0588188Z         },
2026-06-21T09:37:52.0588273Z         "unit": {
2026-06-21T09:37:52.0588364Z           "complete": true,
2026-06-21T09:37:52.0588455Z           "evidence": [
2026-06-21T09:37:52.0588540Z             {
2026-06-21T09:37:52.0588649Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0588741Z               "line": 420
2026-06-21T09:37:52.0588818Z             },
2026-06-21T09:37:52.0588901Z             {
2026-06-21T09:37:52.0591630Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0591764Z               "line": 441
2026-06-21T09:37:52.0591854Z             },
2026-06-21T09:37:52.0591940Z             {
2026-06-21T09:37:52.0592065Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0592150Z               "line": 811
2026-06-21T09:37:52.0592226Z             },
2026-06-21T09:37:52.0592332Z             {
2026-06-21T09:37:52.0592455Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0592541Z               "line": 822
2026-06-21T09:37:52.0592623Z             },
2026-06-21T09:37:52.0592703Z             {
2026-06-21T09:37:52.0592812Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0592904Z               "line": 835
2026-06-21T09:37:52.0592984Z             }
2026-06-21T09:37:52.0593070Z           ]
2026-06-21T09:37:52.0593151Z         }
2026-06-21T09:37:52.0593229Z       }
2026-06-21T09:37:52.0593313Z     },
2026-06-21T09:37:52.0593389Z     {
2026-06-21T09:37:52.0593510Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T09:37:52.0600921Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T09:37:52.0601312Z       "requiredStages": [
2026-06-21T09:37:52.0601402Z         "impl",
2026-06-21T09:37:52.0601493Z         "unit",
2026-06-21T09:37:52.0601561Z         "int"
2026-06-21T09:37:52.0601641Z       ],
2026-06-21T09:37:52.0601740Z       "stages": {
2026-06-21T09:37:52.0601825Z         "doc": {
2026-06-21T09:37:52.0601926Z           "complete": false,
2026-06-21T09:37:52.0602009Z           "evidence": []
2026-06-21T09:37:52.0602100Z         },
2026-06-21T09:37:52.0602185Z         "impl": {
2026-06-21T09:37:52.0602277Z           "complete": true,
2026-06-21T09:37:52.0602362Z           "evidence": [
2026-06-21T09:37:52.0602447Z             {
2026-06-21T09:37:52.0602577Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0602667Z               "line": 357
2026-06-21T09:37:52.0602748Z             },
2026-06-21T09:37:52.0602820Z             {
2026-06-21T09:37:52.0602949Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0603029Z               "line": 792
2026-06-21T09:37:52.0603111Z             },
2026-06-21T09:37:52.0603197Z             {
2026-06-21T09:37:52.0603306Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0603406Z               "line": 1061
2026-06-21T09:37:52.0603503Z             }
2026-06-21T09:37:52.0603582Z           ]
2026-06-21T09:37:52.0603668Z         },
2026-06-21T09:37:52.0603760Z         "int": {
2026-06-21T09:37:52.0603855Z           "complete": true,
2026-06-21T09:37:52.0603935Z           "evidence": [
2026-06-21T09:37:52.0604016Z             {
2026-06-21T09:37:52.0604165Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0604254Z               "line": 256
2026-06-21T09:37:52.0604346Z             },
2026-06-21T09:37:52.0604428Z             {
2026-06-21T09:37:52.0604559Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0604645Z               "line": 382
2026-06-21T09:37:52.0604730Z             }
2026-06-21T09:37:52.0604811Z           ]
2026-06-21T09:37:52.0604895Z         },
2026-06-21T09:37:52.0604976Z         "unit": {
2026-06-21T09:37:52.0605057Z           "complete": true,
2026-06-21T09:37:52.0605158Z           "evidence": [
2026-06-21T09:37:52.0605324Z             {
2026-06-21T09:37:52.0605435Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0605534Z               "line": 2558
2026-06-21T09:37:52.0605620Z             }
2026-06-21T09:37:52.0605707Z           ]
2026-06-21T09:37:52.0605787Z         }
2026-06-21T09:37:52.0605873Z       }
2026-06-21T09:37:52.0605958Z     },
2026-06-21T09:37:52.0606046Z     {
2026-06-21T09:37:52.0606169Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T09:37:52.0613380Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T09:37:52.0613632Z       "requiredStages": [
2026-06-21T09:37:52.0613724Z         "doc",
2026-06-21T09:37:52.0613814Z         "impl",
2026-06-21T09:37:52.0613904Z         "unit",
2026-06-21T09:37:52.0613985Z         "int"
2026-06-21T09:37:52.0614063Z       ],
2026-06-21T09:37:52.0614147Z       "stages": {
2026-06-21T09:37:52.0614238Z         "doc": {
2026-06-21T09:37:52.0614330Z           "complete": true,
2026-06-21T09:37:52.0614415Z           "evidence": [
2026-06-21T09:37:52.0614500Z             {
2026-06-21T09:37:52.0614610Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0614693Z               "line": 454
2026-06-21T09:37:52.0614781Z             }
2026-06-21T09:37:52.0614863Z           ]
2026-06-21T09:37:52.0614950Z         },
2026-06-21T09:37:52.0615041Z         "impl": {
2026-06-21T09:37:52.0615139Z           "complete": true,
2026-06-21T09:37:52.0615233Z           "evidence": [
2026-06-21T09:37:52.0615315Z             {
2026-06-21T09:37:52.0615437Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.0615522Z               "line": 203
2026-06-21T09:37:52.0615699Z             },
2026-06-21T09:37:52.0615784Z             {
2026-06-21T09:37:52.0615898Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0615990Z               "line": 487
2026-06-21T09:37:52.0616076Z             },
2026-06-21T09:37:52.0616161Z             {
2026-06-21T09:37:52.0616277Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0616366Z               "line": 1862
2026-06-21T09:37:52.0616447Z             },
2026-06-21T09:37:52.0616528Z             {
2026-06-21T09:37:52.0616648Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0616724Z               "line": 331
2026-06-21T09:37:52.0616887Z             }
2026-06-21T09:37:52.0616968Z           ]
2026-06-21T09:37:52.0617052Z         },
2026-06-21T09:37:52.0617139Z         "int": {
2026-06-21T09:37:52.0617230Z           "complete": true,
2026-06-21T09:37:52.0617311Z           "evidence": [
2026-06-21T09:37:52.0617396Z             {
2026-06-21T09:37:52.0617516Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.0617607Z               "line": 737
2026-06-21T09:37:52.0617691Z             },
2026-06-21T09:37:52.0617771Z             {
2026-06-21T09:37:52.0617896Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.0617975Z               "line": 854
2026-06-21T09:37:52.0618061Z             },
2026-06-21T09:37:52.0618141Z             {
2026-06-21T09:37:52.0618290Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0618380Z               "line": 544
2026-06-21T09:37:52.0618461Z             },
2026-06-21T09:37:52.0618547Z             {
2026-06-21T09:37:52.0618699Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0618790Z               "line": 1800
2026-06-21T09:37:52.0618871Z             },
2026-06-21T09:37:52.0619009Z             {
2026-06-21T09:37:52.0619144Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T09:37:52.0619243Z               "line": 266
2026-06-21T09:37:52.0619329Z             }
2026-06-21T09:37:52.0619414Z           ]
2026-06-21T09:37:52.0619497Z         },
2026-06-21T09:37:52.0619634Z         "unit": {
2026-06-21T09:37:52.0619724Z           "complete": true,
2026-06-21T09:37:52.0619816Z           "evidence": [
2026-06-21T09:37:52.0619891Z             {
2026-06-21T09:37:52.0619996Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0620083Z               "line": 985
2026-06-21T09:37:52.0620173Z             },
2026-06-21T09:37:52.0620249Z             {
2026-06-21T09:37:52.0620349Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.0620451Z               "line": 1019
2026-06-21T09:37:52.0620535Z             }
2026-06-21T09:37:52.0620615Z           ]
2026-06-21T09:37:52.0620724Z         }
2026-06-21T09:37:52.0620840Z       }
2026-06-21T09:37:52.0620930Z     },
2026-06-21T09:37:52.0621011Z     {
2026-06-21T09:37:52.0621121Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T09:37:52.0621674Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T09:37:52.0621774Z       "requiredStages": [
2026-06-21T09:37:52.0621860Z         "impl",
2026-06-21T09:37:52.0621940Z         "unit"
2026-06-21T09:37:52.0622018Z       ],
2026-06-21T09:37:52.0622104Z       "stages": {
2026-06-21T09:37:52.0622184Z         "doc": {
2026-06-21T09:37:52.0622289Z           "complete": false,
2026-06-21T09:37:52.0622380Z           "evidence": []
2026-06-21T09:37:52.0622475Z         },
2026-06-21T09:37:52.0622560Z         "impl": {
2026-06-21T09:37:52.0622652Z           "complete": true,
2026-06-21T09:37:52.0622728Z           "evidence": [
2026-06-21T09:37:52.0622813Z             {
2026-06-21T09:37:52.0622940Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0623036Z               "line": 759
2026-06-21T09:37:52.0623224Z             }
2026-06-21T09:37:52.0623301Z           ]
2026-06-21T09:37:52.0623387Z         },
2026-06-21T09:37:52.0623468Z         "int": {
2026-06-21T09:37:52.0623563Z           "complete": false,
2026-06-21T09:37:52.0623649Z           "evidence": []
2026-06-21T09:37:52.0623735Z         },
2026-06-21T09:37:52.0623820Z         "unit": {
2026-06-21T09:37:52.0623911Z           "complete": true,
2026-06-21T09:37:52.0624008Z           "evidence": [
2026-06-21T09:37:52.0624088Z             {
2026-06-21T09:37:52.0624207Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0624303Z               "line": 873
2026-06-21T09:37:52.0624473Z             }
2026-06-21T09:37:52.0624565Z           ]
2026-06-21T09:37:52.0624642Z         }
2026-06-21T09:37:52.0624727Z       }
2026-06-21T09:37:52.0624807Z     },
2026-06-21T09:37:52.0624895Z     {
2026-06-21T09:37:52.0625018Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T09:37:52.0627327Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T09:37:52.0627437Z       "requiredStages": [
2026-06-21T09:37:52.0627523Z         "impl",
2026-06-21T09:37:52.0627603Z         "unit",
2026-06-21T09:37:52.0627679Z         "int"
2026-06-21T09:37:52.0627771Z       ],
2026-06-21T09:37:52.0627857Z       "stages": {
2026-06-21T09:37:52.0627937Z         "doc": {
2026-06-21T09:37:52.0628028Z           "complete": false,
2026-06-21T09:37:52.0628120Z           "evidence": []
2026-06-21T09:37:52.0628200Z         },
2026-06-21T09:37:52.0628284Z         "impl": {
2026-06-21T09:37:52.0628369Z           "complete": true,
2026-06-21T09:37:52.0628456Z           "evidence": [
2026-06-21T09:37:52.0628540Z             {
2026-06-21T09:37:52.0628668Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0628749Z               "line": 705
2026-06-21T09:37:52.0628831Z             }
2026-06-21T09:37:52.0628926Z           ]
2026-06-21T09:37:52.0629122Z         },
2026-06-21T09:37:52.0629226Z         "int": {
2026-06-21T09:37:52.0629326Z           "complete": true,
2026-06-21T09:37:52.0629408Z           "evidence": [
2026-06-21T09:37:52.0629527Z             {
2026-06-21T09:37:52.0629665Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T09:37:52.0629756Z               "line": 24
2026-06-21T09:37:52.0629841Z             }
2026-06-21T09:37:52.0629927Z           ]
2026-06-21T09:37:52.0630013Z         },
2026-06-21T09:37:52.0630103Z         "unit": {
2026-06-21T09:37:52.0630194Z           "complete": true,
2026-06-21T09:37:52.0630284Z           "evidence": [
2026-06-21T09:37:52.0630372Z             {
2026-06-21T09:37:52.0630484Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0630571Z               "line": 918
2026-06-21T09:37:52.0630658Z             }
2026-06-21T09:37:52.0630738Z           ]
2026-06-21T09:37:52.0630818Z         }
2026-06-21T09:37:52.0630909Z       }
2026-06-21T09:37:52.0630992Z     },
2026-06-21T09:37:52.0631067Z     {
2026-06-21T09:37:52.0631185Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T09:37:52.0634705Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T09:37:52.0635039Z       "requiredStages": [
2026-06-21T09:37:52.0635125Z         "impl",
2026-06-21T09:37:52.0635211Z         "unit",
2026-06-21T09:37:52.0635292Z         "int"
2026-06-21T09:37:52.0635377Z       ],
2026-06-21T09:37:52.0635460Z       "stages": {
2026-06-21T09:37:52.0635545Z         "doc": {
2026-06-21T09:37:52.0635645Z           "complete": false,
2026-06-21T09:37:52.0635731Z           "evidence": []
2026-06-21T09:37:52.0635808Z         },
2026-06-21T09:37:52.0635888Z         "impl": {
2026-06-21T09:37:52.0635983Z           "complete": true,
2026-06-21T09:37:52.0636079Z           "evidence": [
2026-06-21T09:37:52.0636170Z             {
2026-06-21T09:37:52.0636297Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0636377Z               "line": 391
2026-06-21T09:37:52.0636464Z             },
2026-06-21T09:37:52.0636543Z             {
2026-06-21T09:37:52.0636656Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0636738Z               "line": 343
2026-06-21T09:37:52.0636819Z             },
2026-06-21T09:37:52.0636905Z             {
2026-06-21T09:37:52.0637005Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0637087Z               "line": 1750
2026-06-21T09:37:52.0637172Z             },
2026-06-21T09:37:52.0637253Z             {
2026-06-21T09:37:52.0637358Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0637440Z               "line": 3191
2026-06-21T09:37:52.0637521Z             }
2026-06-21T09:37:52.0637600Z           ]
2026-06-21T09:37:52.0637682Z         },
2026-06-21T09:37:52.0637769Z         "int": {
2026-06-21T09:37:52.0637869Z           "complete": true,
2026-06-21T09:37:52.0637964Z           "evidence": [
2026-06-21T09:37:52.0638045Z             {
2026-06-21T09:37:52.0638177Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:37:52.0638259Z               "line": 353
2026-06-21T09:37:52.0638346Z             },
2026-06-21T09:37:52.0638436Z             {
2026-06-21T09:37:52.0638578Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T09:37:52.0638670Z               "line": 23
2026-06-21T09:37:52.0638751Z             }
2026-06-21T09:37:52.0638830Z           ]
2026-06-21T09:37:52.0638915Z         },
2026-06-21T09:37:52.0639110Z         "unit": {
2026-06-21T09:37:52.0639209Z           "complete": true,
2026-06-21T09:37:52.0639295Z           "evidence": [
2026-06-21T09:37:52.0639377Z             {
2026-06-21T09:37:52.0639490Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0639581Z               "line": 743
2026-06-21T09:37:52.0639663Z             },
2026-06-21T09:37:52.0639754Z             {
2026-06-21T09:37:52.0639848Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0639939Z               "line": 7863
2026-06-21T09:37:52.0640025Z             }
2026-06-21T09:37:52.0640101Z           ]
2026-06-21T09:37:52.0640186Z         }
2026-06-21T09:37:52.0640269Z       }
2026-06-21T09:37:52.0640458Z     },
2026-06-21T09:37:52.0640539Z     {
2026-06-21T09:37:52.0640655Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T09:37:52.0643867Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T09:37:52.0644080Z       "requiredStages": [
2026-06-21T09:37:52.0644161Z         "impl",
2026-06-21T09:37:52.0644245Z         "unit",
2026-06-21T09:37:52.0644330Z         "int"
2026-06-21T09:37:52.0644417Z       ],
2026-06-21T09:37:52.0644513Z       "stages": {
2026-06-21T09:37:52.0644593Z         "doc": {
2026-06-21T09:37:52.0644688Z           "complete": false,
2026-06-21T09:37:52.0644779Z           "evidence": []
2026-06-21T09:37:52.0644865Z         },
2026-06-21T09:37:52.0644951Z         "impl": {
2026-06-21T09:37:52.0645046Z           "complete": true,
2026-06-21T09:37:52.0645133Z           "evidence": [
2026-06-21T09:37:52.0645213Z             {
2026-06-21T09:37:52.0645337Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0645418Z               "line": 64
2026-06-21T09:37:52.0645504Z             },
2026-06-21T09:37:52.0645589Z             {
2026-06-21T09:37:52.0645715Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0645804Z               "line": 78
2026-06-21T09:37:52.0645890Z             },
2026-06-21T09:37:52.0645976Z             {
2026-06-21T09:37:52.0646096Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0646195Z               "line": 170
2026-06-21T09:37:52.0646286Z             },
2026-06-21T09:37:52.0646377Z             {
2026-06-21T09:37:52.0646500Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0646591Z               "line": 185
2026-06-21T09:37:52.0646678Z             },
2026-06-21T09:37:52.0646758Z             {
2026-06-21T09:37:52.0646881Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0646962Z               "line": 195
2026-06-21T09:37:52.0647052Z             },
2026-06-21T09:37:52.0647146Z             {
2026-06-21T09:37:52.0647255Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0647341Z               "line": 205
2026-06-21T09:37:52.0647428Z             },
2026-06-21T09:37:52.0647507Z             {
2026-06-21T09:37:52.0647613Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0647709Z               "line": 294
2026-06-21T09:37:52.0647794Z             },
2026-06-21T09:37:52.0647874Z             {
2026-06-21T09:37:52.0647995Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0648081Z               "line": 308
2026-06-21T09:37:52.0648175Z             },
2026-06-21T09:37:52.0648257Z             {
2026-06-21T09:37:52.0648371Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0648466Z               "line": 377
2026-06-21T09:37:52.0648547Z             },
2026-06-21T09:37:52.0648629Z             {
2026-06-21T09:37:52.0648824Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0648920Z               "line": 437
2026-06-21T09:37:52.0649086Z             },
2026-06-21T09:37:52.0649172Z             {
2026-06-21T09:37:52.0649287Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0649367Z               "line": 455
2026-06-21T09:37:52.0649452Z             }
2026-06-21T09:37:52.0649533Z           ]
2026-06-21T09:37:52.0649619Z         },
2026-06-21T09:37:52.0649698Z         "int": {
2026-06-21T09:37:52.0649788Z           "complete": true,
2026-06-21T09:37:52.0649870Z           "evidence": [
2026-06-21T09:37:52.0649956Z             {
2026-06-21T09:37:52.0650189Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:37:52.0650275Z               "line": 45
2026-06-21T09:37:52.0650365Z             },
2026-06-21T09:37:52.0650451Z             {
2026-06-21T09:37:52.0650581Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T09:37:52.0650680Z               "line": 354
2026-06-21T09:37:52.0650761Z             },
2026-06-21T09:37:52.0650843Z             {
2026-06-21T09:37:52.0650986Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T09:37:52.0651076Z               "line": 31
2026-06-21T09:37:52.0651163Z             }
2026-06-21T09:37:52.0651248Z           ]
2026-06-21T09:37:52.0651333Z         },
2026-06-21T09:37:52.0651419Z         "unit": {
2026-06-21T09:37:52.0651516Z           "complete": true,
2026-06-21T09:37:52.0651604Z           "evidence": [
2026-06-21T09:37:52.0651681Z             {
2026-06-21T09:37:52.0651797Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0651896Z               "line": 727
2026-06-21T09:37:52.0651977Z             }
2026-06-21T09:37:52.0652054Z           ]
2026-06-21T09:37:52.0652141Z         }
2026-06-21T09:37:52.0652216Z       }
2026-06-21T09:37:52.0652305Z     },
2026-06-21T09:37:52.0652391Z     {
2026-06-21T09:37:52.0652496Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T09:37:52.0652715Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T09:37:52.0652797Z       "requiredStages": [
2026-06-21T09:37:52.0652883Z         "impl",
2026-06-21T09:37:52.0652963Z         "unit"
2026-06-21T09:37:52.0653054Z       ],
2026-06-21T09:37:52.0653144Z       "stages": {
2026-06-21T09:37:52.0653230Z         "doc": {
2026-06-21T09:37:52.0653330Z           "complete": false,
2026-06-21T09:37:52.0653422Z           "evidence": []
2026-06-21T09:37:52.0653507Z         },
2026-06-21T09:37:52.0653587Z         "impl": {
2026-06-21T09:37:52.0653688Z           "complete": true,
2026-06-21T09:37:52.0653784Z           "evidence": [
2026-06-21T09:37:52.0653860Z             {
2026-06-21T09:37:52.0653969Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:37:52.0654056Z               "line": 14
2026-06-21T09:37:52.0654145Z             },
2026-06-21T09:37:52.0654226Z             {
2026-06-21T09:37:52.0654352Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.0654446Z               "line": 566
2026-06-21T09:37:52.0654526Z             }
2026-06-21T09:37:52.0654616Z           ]
2026-06-21T09:37:52.0654698Z         },
2026-06-21T09:37:52.0654787Z         "int": {
2026-06-21T09:37:52.0654881Z           "complete": false,
2026-06-21T09:37:52.0654962Z           "evidence": []
2026-06-21T09:37:52.0655054Z         },
2026-06-21T09:37:52.0655139Z         "unit": {
2026-06-21T09:37:52.0655229Z           "complete": true,
2026-06-21T09:37:52.0655306Z           "evidence": [
2026-06-21T09:37:52.0655392Z             {
2026-06-21T09:37:52.0655501Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:37:52.0655601Z               "line": 130
2026-06-21T09:37:52.0655688Z             },
2026-06-21T09:37:52.0655773Z             {
2026-06-21T09:37:52.0655877Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:37:52.0655965Z               "line": 138
2026-06-21T09:37:52.0656159Z             },
2026-06-21T09:37:52.0656241Z             {
2026-06-21T09:37:52.0656355Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:37:52.0656450Z               "line": 146
2026-06-21T09:37:52.0656536Z             },
2026-06-21T09:37:52.0656623Z             {
2026-06-21T09:37:52.0656726Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:37:52.0656813Z               "line": 154
2026-06-21T09:37:52.0656895Z             },
2026-06-21T09:37:52.0656985Z             {
2026-06-21T09:37:52.0657089Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:37:52.0657176Z               "line": 162
2026-06-21T09:37:52.0657262Z             },
2026-06-21T09:37:52.0657426Z             {
2026-06-21T09:37:52.0657536Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T09:37:52.0657621Z               "line": 170
2026-06-21T09:37:52.0657711Z             }
2026-06-21T09:37:52.0657796Z           ]
2026-06-21T09:37:52.0657878Z         }
2026-06-21T09:37:52.0657968Z       }
2026-06-21T09:37:52.0658058Z     },
2026-06-21T09:37:52.0658149Z     {
2026-06-21T09:37:52.0658250Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T09:37:52.0659213Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T09:37:52.0659317Z       "requiredStages": [
2026-06-21T09:37:52.0659403Z         "impl",
2026-06-21T09:37:52.0659490Z         "unit"
2026-06-21T09:37:52.0659570Z       ],
2026-06-21T09:37:52.0659656Z       "stages": {
2026-06-21T09:37:52.0659757Z         "doc": {
2026-06-21T09:37:52.0659852Z           "complete": false,
2026-06-21T09:37:52.0659946Z           "evidence": []
2026-06-21T09:37:52.0660031Z         },
2026-06-21T09:37:52.0660117Z         "impl": {
2026-06-21T09:37:52.0660202Z           "complete": true,
2026-06-21T09:37:52.0660296Z           "evidence": [
2026-06-21T09:37:52.0660381Z             {
2026-06-21T09:37:52.0660531Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0660620Z               "line": 34
2026-06-21T09:37:52.0660696Z             }
2026-06-21T09:37:52.0660779Z           ]
2026-06-21T09:37:52.0660864Z         },
2026-06-21T09:37:52.0660953Z         "int": {
2026-06-21T09:37:52.0661050Z           "complete": false,
2026-06-21T09:37:52.0661141Z           "evidence": []
2026-06-21T09:37:52.0661227Z         },
2026-06-21T09:37:52.0661311Z         "unit": {
2026-06-21T09:37:52.0661393Z           "complete": true,
2026-06-21T09:37:52.0661479Z           "evidence": [
2026-06-21T09:37:52.0661574Z             {
2026-06-21T09:37:52.0661713Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0661799Z               "line": 188
2026-06-21T09:37:52.0661884Z             },
2026-06-21T09:37:52.0661970Z             {
2026-06-21T09:37:52.0662099Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0662189Z               "line": 200
2026-06-21T09:37:52.0662275Z             },
2026-06-21T09:37:52.0662362Z             {
2026-06-21T09:37:52.0662489Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0662575Z               "line": 211
2026-06-21T09:37:52.0662663Z             },
2026-06-21T09:37:52.0662753Z             {
2026-06-21T09:37:52.0662880Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0662975Z               "line": 253
2026-06-21T09:37:52.0663061Z             },
2026-06-21T09:37:52.0663142Z             {
2026-06-21T09:37:52.0663285Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0663376Z               "line": 277
2026-06-21T09:37:52.0663462Z             },
2026-06-21T09:37:52.0663552Z             {
2026-06-21T09:37:52.0663686Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0663895Z               "line": 300
2026-06-21T09:37:52.0663982Z             },
2026-06-21T09:37:52.0664062Z             {
2026-06-21T09:37:52.0664196Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T09:37:52.0664277Z               "line": 316
2026-06-21T09:37:52.0664367Z             }
2026-06-21T09:37:52.0664453Z           ]
2026-06-21T09:37:52.0664539Z         }
2026-06-21T09:37:52.0664616Z       }
2026-06-21T09:37:52.0664696Z     },
2026-06-21T09:37:52.0664777Z     {
2026-06-21T09:37:52.0664897Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T09:37:52.0665508Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T09:37:52.0665694Z       "requiredStages": [
2026-06-21T09:37:52.0665784Z         "impl",
2026-06-21T09:37:52.0665871Z         "unit"
2026-06-21T09:37:52.0665957Z       ],
2026-06-21T09:37:52.0666047Z       "stages": {
2026-06-21T09:37:52.0666132Z         "doc": {
2026-06-21T09:37:52.0666234Z           "complete": false,
2026-06-21T09:37:52.0666324Z           "evidence": []
2026-06-21T09:37:52.0666409Z         },
2026-06-21T09:37:52.0666496Z         "impl": {
2026-06-21T09:37:52.0666596Z           "complete": true,
2026-06-21T09:37:52.0666681Z           "evidence": [
2026-06-21T09:37:52.0666762Z             {
2026-06-21T09:37:52.0666882Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0666968Z               "line": 29
2026-06-21T09:37:52.0667058Z             },
2026-06-21T09:37:52.0667140Z             {
2026-06-21T09:37:52.0667268Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0667353Z               "line": 174
2026-06-21T09:37:52.0667440Z             },
2026-06-21T09:37:52.0667531Z             {
2026-06-21T09:37:52.0667644Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0667726Z               "line": 194
2026-06-21T09:37:52.0667808Z             },
2026-06-21T09:37:52.0667902Z             {
2026-06-21T09:37:52.0668001Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0668086Z               "line": 222
2026-06-21T09:37:52.0668167Z             }
2026-06-21T09:37:52.0668247Z           ]
2026-06-21T09:37:52.0668327Z         },
2026-06-21T09:37:52.0668413Z         "int": {
2026-06-21T09:37:52.0668505Z           "complete": false,
2026-06-21T09:37:52.0668590Z           "evidence": []
2026-06-21T09:37:52.0668675Z         },
2026-06-21T09:37:52.0668763Z         "unit": {
2026-06-21T09:37:52.0668848Z           "complete": true,
2026-06-21T09:37:52.0669038Z           "evidence": [
2026-06-21T09:37:52.0669120Z             {
2026-06-21T09:37:52.0669243Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0669334Z               "line": 329
2026-06-21T09:37:52.0669444Z             },
2026-06-21T09:37:52.0669544Z             {
2026-06-21T09:37:52.0669653Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0669745Z               "line": 344
2026-06-21T09:37:52.0669820Z             },
2026-06-21T09:37:52.0669911Z             {
2026-06-21T09:37:52.0670027Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0670116Z               "line": 417
2026-06-21T09:37:52.0670196Z             },
2026-06-21T09:37:52.0670278Z             {
2026-06-21T09:37:52.0670393Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0670483Z               "line": 433
2026-06-21T09:37:52.0670572Z             },
2026-06-21T09:37:52.0670653Z             {
2026-06-21T09:37:52.0670758Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0670861Z               "line": 492
2026-06-21T09:37:52.0670942Z             },
2026-06-21T09:37:52.0671023Z             {
2026-06-21T09:37:52.0671129Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0671223Z               "line": 506
2026-06-21T09:37:52.0671414Z             },
2026-06-21T09:37:52.0671500Z             {
2026-06-21T09:37:52.0671605Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0671691Z               "line": 517
2026-06-21T09:37:52.0671772Z             },
2026-06-21T09:37:52.0671857Z             {
2026-06-21T09:37:52.0671968Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.0672058Z               "line": 528
2026-06-21T09:37:52.0672134Z             }
2026-06-21T09:37:52.0672225Z           ]
2026-06-21T09:37:52.0672307Z         }
2026-06-21T09:37:52.0672392Z       }
2026-06-21T09:37:52.0672473Z     },
2026-06-21T09:37:52.0672554Z     {
2026-06-21T09:37:52.0672764Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T09:37:52.0673425Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T09:37:52.0673535Z       "requiredStages": [
2026-06-21T09:37:52.0673617Z         "impl",
2026-06-21T09:37:52.0673702Z         "unit"
2026-06-21T09:37:52.0673787Z       ],
2026-06-21T09:37:52.0673869Z       "stages": {
2026-06-21T09:37:52.0673950Z         "doc": {
2026-06-21T09:37:52.0674045Z           "complete": false,
2026-06-21T09:37:52.0674155Z           "evidence": []
2026-06-21T09:37:52.0674237Z         },
2026-06-21T09:37:52.0674318Z         "impl": {
2026-06-21T09:37:52.0674412Z           "complete": true,
2026-06-21T09:37:52.0674499Z           "evidence": [
2026-06-21T09:37:52.0674589Z             {
2026-06-21T09:37:52.0674722Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0674828Z               "line": 27
2026-06-21T09:37:52.0674909Z             },
2026-06-21T09:37:52.0674985Z             {
2026-06-21T09:37:52.0675114Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0675205Z               "line": 110
2026-06-21T09:37:52.0675289Z             },
2026-06-21T09:37:52.0675375Z             {
2026-06-21T09:37:52.0675496Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0675585Z               "line": 153
2026-06-21T09:37:52.0675670Z             },
2026-06-21T09:37:52.0675756Z             {
2026-06-21T09:37:52.0675879Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0675968Z               "line": 182
2026-06-21T09:37:52.0676048Z             },
2026-06-21T09:37:52.0676140Z             {
2026-06-21T09:37:52.0676278Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0676373Z               "line": 31
2026-06-21T09:37:52.0676470Z             },
2026-06-21T09:37:52.0676551Z             {
2026-06-21T09:37:52.0676697Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0676785Z               "line": 113
2026-06-21T09:37:52.0676880Z             },
2026-06-21T09:37:52.0676960Z             {
2026-06-21T09:37:52.0677104Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0677199Z               "line": 138
2026-06-21T09:37:52.0677279Z             }
2026-06-21T09:37:52.0677361Z           ]
2026-06-21T09:37:52.0677438Z         },
2026-06-21T09:37:52.0677518Z         "int": {
2026-06-21T09:37:52.0677599Z           "complete": false,
2026-06-21T09:37:52.0677686Z           "evidence": []
2026-06-21T09:37:52.0677776Z         },
2026-06-21T09:37:52.0677861Z         "unit": {
2026-06-21T09:37:52.0677957Z           "complete": true,
2026-06-21T09:37:52.0678044Z           "evidence": [
2026-06-21T09:37:52.0678128Z             {
2026-06-21T09:37:52.0678257Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0678354Z               "line": 261
2026-06-21T09:37:52.0678438Z             },
2026-06-21T09:37:52.0678523Z             {
2026-06-21T09:37:52.0678652Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0678733Z               "line": 276
2026-06-21T09:37:52.0678902Z             },
2026-06-21T09:37:52.0679046Z             {
2026-06-21T09:37:52.0679169Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0679259Z               "line": 293
2026-06-21T09:37:52.0679332Z             },
2026-06-21T09:37:52.0679423Z             {
2026-06-21T09:37:52.0679541Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0682318Z               "line": 310
2026-06-21T09:37:52.0682422Z             },
2026-06-21T09:37:52.0682514Z             {
2026-06-21T09:37:52.0682661Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0682904Z               "line": 327
2026-06-21T09:37:52.0682990Z             },
2026-06-21T09:37:52.0683071Z             {
2026-06-21T09:37:52.0683210Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.0683295Z               "line": 366
2026-06-21T09:37:52.0683376Z             },
2026-06-21T09:37:52.0683463Z             {
2026-06-21T09:37:52.0683610Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0683700Z               "line": 179
2026-06-21T09:37:52.0683783Z             },
2026-06-21T09:37:52.0683868Z             {
2026-06-21T09:37:52.0684000Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0684085Z               "line": 194
2026-06-21T09:37:52.0684177Z             },
2026-06-21T09:37:52.0684258Z             {
2026-06-21T09:37:52.0684390Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0684478Z               "line": 204
2026-06-21T09:37:52.0684568Z             },
2026-06-21T09:37:52.0684652Z             {
2026-06-21T09:37:52.0684773Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0684868Z               "line": 259
2026-06-21T09:37:52.0684944Z             },
2026-06-21T09:37:52.0685030Z             {
2026-06-21T09:37:52.0685159Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0685245Z               "line": 269
2026-06-21T09:37:52.0685335Z             },
2026-06-21T09:37:52.0685417Z             {
2026-06-21T09:37:52.0685540Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.0685630Z               "line": 283
2026-06-21T09:37:52.0685717Z             }
2026-06-21T09:37:52.0685798Z           ]
2026-06-21T09:37:52.0685883Z         }
2026-06-21T09:37:52.0685970Z       }
2026-06-21T09:37:52.0686051Z     },
2026-06-21T09:37:52.0686131Z     {
2026-06-21T09:37:52.0686245Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T09:37:52.0686440Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T09:37:52.0686538Z       "requiredStages": [],
2026-06-21T09:37:52.0686628Z       "stages": {
2026-06-21T09:37:52.0686720Z         "doc": {
2026-06-21T09:37:52.0686805Z           "complete": false,
2026-06-21T09:37:52.0686886Z           "evidence": []
2026-06-21T09:37:52.0686967Z         },
2026-06-21T09:37:52.0687049Z         "impl": {
2026-06-21T09:37:52.0687134Z           "complete": false,
2026-06-21T09:37:52.0687224Z           "evidence": []
2026-06-21T09:37:52.0687306Z         },
2026-06-21T09:37:52.0687392Z         "int": {
2026-06-21T09:37:52.0687520Z           "complete": false,
2026-06-21T09:37:52.0687607Z           "evidence": []
2026-06-21T09:37:52.0687693Z         },
2026-06-21T09:37:52.0687778Z         "unit": {
2026-06-21T09:37:52.0687883Z           "complete": false,
2026-06-21T09:37:52.0688045Z           "evidence": []
2026-06-21T09:37:52.0688121Z         }
2026-06-21T09:37:52.0688212Z       }
2026-06-21T09:37:52.0688289Z     },
2026-06-21T09:37:52.0688369Z     {
2026-06-21T09:37:52.0688512Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T09:37:52.0689438Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T09:37:52.0689868Z       "requiredStages": [
2026-06-21T09:37:52.0689949Z         "impl",
2026-06-21T09:37:52.0690030Z         "unit"
2026-06-21T09:37:52.0690115Z       ],
2026-06-21T09:37:52.0690193Z       "stages": {
2026-06-21T09:37:52.0690278Z         "doc": {
2026-06-21T09:37:52.0690363Z           "complete": false,
2026-06-21T09:37:52.0690449Z           "evidence": []
2026-06-21T09:37:52.0690522Z         },
2026-06-21T09:37:52.0690611Z         "impl": {
2026-06-21T09:37:52.0690702Z           "complete": true,
2026-06-21T09:37:52.0690788Z           "evidence": [
2026-06-21T09:37:52.0690983Z             {
2026-06-21T09:37:52.0691113Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0691208Z               "line": 26
2026-06-21T09:37:52.0691288Z             },
2026-06-21T09:37:52.0691375Z             {
2026-06-21T09:37:52.0691495Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0691593Z               "line": 95
2026-06-21T09:37:52.0691678Z             },
2026-06-21T09:37:52.0691764Z             {
2026-06-21T09:37:52.0691878Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0691962Z               "line": 166
2026-06-21T09:37:52.0692052Z             },
2026-06-21T09:37:52.0692134Z             {
2026-06-21T09:37:52.0692249Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0692329Z               "line": 19
2026-06-21T09:37:52.0692406Z             },
2026-06-21T09:37:52.0692487Z             {
2026-06-21T09:37:52.0692592Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0692691Z               "line": 50
2026-06-21T09:37:52.0692779Z             },
2026-06-21T09:37:52.0692854Z             {
2026-06-21T09:37:52.0692968Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:37:52.0693060Z               "line": 18
2026-06-21T09:37:52.0693140Z             },
2026-06-21T09:37:52.0693231Z             {
2026-06-21T09:37:52.0693335Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:37:52.0693422Z               "line": 71
2026-06-21T09:37:52.0693507Z             },
2026-06-21T09:37:52.0693593Z             {
2026-06-21T09:37:52.0693704Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.0693798Z               "line": 87
2026-06-21T09:37:52.0693884Z             }
2026-06-21T09:37:52.0693970Z           ]
2026-06-21T09:37:52.0694048Z         },
2026-06-21T09:37:52.0694136Z         "int": {
2026-06-21T09:37:52.0694223Z           "complete": false,
2026-06-21T09:37:52.0694305Z           "evidence": []
2026-06-21T09:37:52.0694390Z         },
2026-06-21T09:37:52.0694479Z         "unit": {
2026-06-21T09:37:52.0694578Z           "complete": true,
2026-06-21T09:37:52.0694675Z           "evidence": [
2026-06-21T09:37:52.0694756Z             {
2026-06-21T09:37:52.0694888Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0694975Z               "line": 289
2026-06-21T09:37:52.0695062Z             },
2026-06-21T09:37:52.0695142Z             {
2026-06-21T09:37:52.0695261Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0695343Z               "line": 314
2026-06-21T09:37:52.0695428Z             },
2026-06-21T09:37:52.0695518Z             {
2026-06-21T09:37:52.0695634Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0695719Z               "line": 350
2026-06-21T09:37:52.0695800Z             },
2026-06-21T09:37:52.0695885Z             {
2026-06-21T09:37:52.0696005Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0696100Z               "line": 418
2026-06-21T09:37:52.0696185Z             },
2026-06-21T09:37:52.0696269Z             {
2026-06-21T09:37:52.0696386Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0696477Z               "line": 429
2026-06-21T09:37:52.0696568Z             },
2026-06-21T09:37:52.0696725Z             {
2026-06-21T09:37:52.0696838Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0696929Z               "line": 460
2026-06-21T09:37:52.0697004Z             },
2026-06-21T09:37:52.0697088Z             {
2026-06-21T09:37:52.0697213Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.0697299Z               "line": 471
2026-06-21T09:37:52.0697389Z             },
2026-06-21T09:37:52.0697470Z             {
2026-06-21T09:37:52.0697590Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0697680Z               "line": 77
2026-06-21T09:37:52.0697765Z             },
2026-06-21T09:37:52.0697924Z             {
2026-06-21T09:37:52.0698037Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0698138Z               "line": 97
2026-06-21T09:37:52.0698224Z             },
2026-06-21T09:37:52.0698300Z             {
2026-06-21T09:37:52.0698409Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0698506Z               "line": 112
2026-06-21T09:37:52.0698591Z             },
2026-06-21T09:37:52.0698672Z             {
2026-06-21T09:37:52.0698791Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0698868Z               "line": 123
2026-06-21T09:37:52.0699024Z             },
2026-06-21T09:37:52.0699106Z             {
2026-06-21T09:37:52.0699216Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0699315Z               "line": 130
2026-06-21T09:37:52.0699392Z             },
2026-06-21T09:37:52.0699474Z             {
2026-06-21T09:37:52.0699587Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T09:37:52.0699682Z               "line": 145
2026-06-21T09:37:52.0699763Z             },
2026-06-21T09:37:52.0699853Z             {
2026-06-21T09:37:52.0699960Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:37:52.0700041Z               "line": 115
2026-06-21T09:37:52.0700127Z             },
2026-06-21T09:37:52.0700209Z             {
2026-06-21T09:37:52.0700318Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:37:52.0700404Z               "line": 130
2026-06-21T09:37:52.0700490Z             },
2026-06-21T09:37:52.0700576Z             {
2026-06-21T09:37:52.0700685Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.0700772Z               "line": 428
2026-06-21T09:37:52.0700857Z             }
2026-06-21T09:37:52.0700942Z           ]
2026-06-21T09:37:52.0701024Z         }
2026-06-21T09:37:52.0701106Z       }
2026-06-21T09:37:52.0701190Z     },
2026-06-21T09:37:52.0701276Z     {
2026-06-21T09:37:52.0701402Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T09:37:52.0707431Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T09:37:52.0707753Z       "requiredStages": [
2026-06-21T09:37:52.0707835Z         "impl",
2026-06-21T09:37:52.0707917Z         "unit",
2026-06-21T09:37:52.0708001Z         "int"
2026-06-21T09:37:52.0708097Z       ],
2026-06-21T09:37:52.0708174Z       "stages": {
2026-06-21T09:37:52.0708254Z         "doc": {
2026-06-21T09:37:52.0708349Z           "complete": false,
2026-06-21T09:37:52.0708436Z           "evidence": []
2026-06-21T09:37:52.0708522Z         },
2026-06-21T09:37:52.0708607Z         "impl": {
2026-06-21T09:37:52.0708693Z           "complete": true,
2026-06-21T09:37:52.0708794Z           "evidence": [
2026-06-21T09:37:52.0708874Z             {
2026-06-21T09:37:52.0709085Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0709175Z               "line": 978
2026-06-21T09:37:52.0709270Z             },
2026-06-21T09:37:52.0709361Z             {
2026-06-21T09:37:52.0709475Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.0709561Z               "line": 322
2026-06-21T09:37:52.0709647Z             }
2026-06-21T09:37:52.0709729Z           ]
2026-06-21T09:37:52.0709804Z         },
2026-06-21T09:37:52.0709885Z         "int": {
2026-06-21T09:37:52.0709986Z           "complete": true,
2026-06-21T09:37:52.0710077Z           "evidence": [
2026-06-21T09:37:52.0710161Z             {
2026-06-21T09:37:52.0710303Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.0710404Z               "line": 1983
2026-06-21T09:37:52.0710483Z             }
2026-06-21T09:37:52.0710563Z           ]
2026-06-21T09:37:52.0710650Z         },
2026-06-21T09:37:52.0710736Z         "unit": {
2026-06-21T09:37:52.0710821Z           "complete": true,
2026-06-21T09:37:52.0710906Z           "evidence": [
2026-06-21T09:37:52.0710993Z             {
2026-06-21T09:37:52.0711108Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0711207Z               "line": 2602
2026-06-21T09:37:52.0711294Z             },
2026-06-21T09:37:52.0711375Z             {
2026-06-21T09:37:52.0711484Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0711574Z               "line": 2666
2026-06-21T09:37:52.0711656Z             },
2026-06-21T09:37:52.0711746Z             {
2026-06-21T09:37:52.0711870Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0711957Z               "line": 2721
2026-06-21T09:37:52.0712038Z             }
2026-06-21T09:37:52.0712123Z           ]
2026-06-21T09:37:52.0712204Z         }
2026-06-21T09:37:52.0712291Z       }
2026-06-21T09:37:52.0712376Z     },
2026-06-21T09:37:52.0712461Z     {
2026-06-21T09:37:52.0712568Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T09:37:52.0713369Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T09:37:52.0713473Z       "requiredStages": [
2026-06-21T09:37:52.0713550Z         "doc",
2026-06-21T09:37:52.0713641Z         "impl",
2026-06-21T09:37:52.0713730Z         "unit"
2026-06-21T09:37:52.0713913Z       ],
2026-06-21T09:37:52.0713999Z       "stages": {
2026-06-21T09:37:52.0714083Z         "doc": {
2026-06-21T09:37:52.0714185Z           "complete": true,
2026-06-21T09:37:52.0714270Z           "evidence": [
2026-06-21T09:37:52.0714356Z             {
2026-06-21T09:37:52.0714470Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0714562Z               "line": 374
2026-06-21T09:37:52.0714642Z             }
2026-06-21T09:37:52.0714727Z           ]
2026-06-21T09:37:52.0714805Z         },
2026-06-21T09:37:52.0714891Z         "impl": {
2026-06-21T09:37:52.0714985Z           "complete": true,
2026-06-21T09:37:52.0715066Z           "evidence": [
2026-06-21T09:37:52.0715243Z             {
2026-06-21T09:37:52.0715371Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0715458Z               "line": 200
2026-06-21T09:37:52.0715544Z             },
2026-06-21T09:37:52.0715623Z             {
2026-06-21T09:37:52.0715727Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0715819Z               "line": 304
2026-06-21T09:37:52.0715900Z             },
2026-06-21T09:37:52.0715985Z             {
2026-06-21T09:37:52.0716095Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0716182Z               "line": 562
2026-06-21T09:37:52.0716267Z             },
2026-06-21T09:37:52.0716352Z             {
2026-06-21T09:37:52.0716468Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0716554Z               "line": 577
2026-06-21T09:37:52.0716638Z             },
2026-06-21T09:37:52.0716720Z             {
2026-06-21T09:37:52.0716834Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0716934Z               "line": 1224
2026-06-21T09:37:52.0717020Z             },
2026-06-21T09:37:52.0717107Z             {
2026-06-21T09:37:52.0717216Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0717311Z               "line": 443
2026-06-21T09:37:52.0717393Z             },
2026-06-21T09:37:52.0717478Z             {
2026-06-21T09:37:52.0717592Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0717679Z               "line": 590
2026-06-21T09:37:52.0717765Z             },
2026-06-21T09:37:52.0717849Z             {
2026-06-21T09:37:52.0717968Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0718049Z               "line": 731
2026-06-21T09:37:52.0718134Z             }
2026-06-21T09:37:52.0718219Z           ]
2026-06-21T09:37:52.0718304Z         },
2026-06-21T09:37:52.0718390Z         "int": {
2026-06-21T09:37:52.0718481Z           "complete": false,
2026-06-21T09:37:52.0718566Z           "evidence": []
2026-06-21T09:37:52.0718652Z         },
2026-06-21T09:37:52.0718749Z         "unit": {
2026-06-21T09:37:52.0718843Z           "complete": true,
2026-06-21T09:37:52.0718938Z           "evidence": [
2026-06-21T09:37:52.0719106Z             {
2026-06-21T09:37:52.0719219Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.0719316Z               "line": 1155
2026-06-21T09:37:52.0719392Z             },
2026-06-21T09:37:52.0719482Z             {
2026-06-21T09:37:52.0719616Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T09:37:52.0719706Z               "line": 30
2026-06-21T09:37:52.0719792Z             }
2026-06-21T09:37:52.0719877Z           ]
2026-06-21T09:37:52.0719960Z         }
2026-06-21T09:37:52.0720040Z       }
2026-06-21T09:37:52.0720126Z     },
2026-06-21T09:37:52.0720207Z     {
2026-06-21T09:37:52.0720322Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T09:37:52.0723531Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T09:37:52.0723849Z       "requiredStages": [
2026-06-21T09:37:52.0723944Z         "impl",
2026-06-21T09:37:52.0724024Z         "unit",
2026-06-21T09:37:52.0724115Z         "int"
2026-06-21T09:37:52.0724196Z       ],
2026-06-21T09:37:52.0724286Z       "stages": {
2026-06-21T09:37:52.0724367Z         "doc": {
2026-06-21T09:37:52.0724469Z           "complete": false,
2026-06-21T09:37:52.0724573Z           "evidence": []
2026-06-21T09:37:52.0724658Z         },
2026-06-21T09:37:52.0724783Z         "impl": {
2026-06-21T09:37:52.0724877Z           "complete": true,
2026-06-21T09:37:52.0724968Z           "evidence": [
2026-06-21T09:37:52.0725055Z             {
2026-06-21T09:37:52.0725169Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0725254Z               "line": 718
2026-06-21T09:37:52.0725335Z             },
2026-06-21T09:37:52.0725418Z             {
2026-06-21T09:37:52.0725525Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0725622Z               "line": 887
2026-06-21T09:37:52.0725699Z             }
2026-06-21T09:37:52.0725789Z           ]
2026-06-21T09:37:52.0725864Z         },
2026-06-21T09:37:52.0725946Z         "int": {
2026-06-21T09:37:52.0726042Z           "complete": true,
2026-06-21T09:37:52.0726132Z           "evidence": [
2026-06-21T09:37:52.0726221Z             {
2026-06-21T09:37:52.0726341Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.0726447Z               "line": 420
2026-06-21T09:37:52.0726531Z             }
2026-06-21T09:37:52.0726617Z           ]
2026-06-21T09:37:52.0726699Z         },
2026-06-21T09:37:52.0726785Z         "unit": {
2026-06-21T09:37:52.0726874Z           "complete": true,
2026-06-21T09:37:52.0726961Z           "evidence": [
2026-06-21T09:37:52.0727042Z             {
2026-06-21T09:37:52.0727146Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0727222Z               "line": 1072
2026-06-21T09:37:52.0727319Z             },
2026-06-21T09:37:52.0727399Z             {
2026-06-21T09:37:52.0727513Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0727590Z               "line": 1096
2026-06-21T09:37:52.0727677Z             }
2026-06-21T09:37:52.0727766Z           ]
2026-06-21T09:37:52.0727847Z         }
2026-06-21T09:37:52.0727925Z       }
2026-06-21T09:37:52.0728010Z     },
2026-06-21T09:37:52.0728090Z     {
2026-06-21T09:37:52.0728214Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T09:37:52.0731789Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T09:37:52.0732012Z       "requiredStages": [
2026-06-21T09:37:52.0732094Z         "impl",
2026-06-21T09:37:52.0732181Z         "unit",
2026-06-21T09:37:52.0732355Z         "int"
2026-06-21T09:37:52.0732443Z       ],
2026-06-21T09:37:52.0732528Z       "stages": {
2026-06-21T09:37:52.0732618Z         "doc": {
2026-06-21T09:37:52.0732714Z           "complete": false,
2026-06-21T09:37:52.0732800Z           "evidence": []
2026-06-21T09:37:52.0732885Z         },
2026-06-21T09:37:52.0732962Z         "impl": {
2026-06-21T09:37:52.0733063Z           "complete": true,
2026-06-21T09:37:52.0733162Z           "evidence": [
2026-06-21T09:37:52.0733243Z             {
2026-06-21T09:37:52.0733348Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0733430Z               "line": 1417
2026-06-21T09:37:52.0733519Z             },
2026-06-21T09:37:52.0733605Z             {
2026-06-21T09:37:52.0733712Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0733797Z               "line": 1441
2026-06-21T09:37:52.0733881Z             }
2026-06-21T09:37:52.0733967Z           ]
2026-06-21T09:37:52.0734043Z         },
2026-06-21T09:37:52.0734133Z         "int": {
2026-06-21T09:37:52.0734231Z           "complete": true,
2026-06-21T09:37:52.0734317Z           "evidence": [
2026-06-21T09:37:52.0734399Z             {
2026-06-21T09:37:52.0734527Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T09:37:52.0734622Z               "line": 329
2026-06-21T09:37:52.0734704Z             }
2026-06-21T09:37:52.0734800Z           ]
2026-06-21T09:37:52.0734879Z         },
2026-06-21T09:37:52.0734971Z         "unit": {
2026-06-21T09:37:52.0735057Z           "complete": true,
2026-06-21T09:37:52.0735152Z           "evidence": [
2026-06-21T09:37:52.0735242Z             {
2026-06-21T09:37:52.0735343Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0735437Z               "line": 8169
2026-06-21T09:37:52.0735518Z             }
2026-06-21T09:37:52.0735595Z           ]
2026-06-21T09:37:52.0735682Z         }
2026-06-21T09:37:52.0735777Z       }
2026-06-21T09:37:52.0735852Z     },
2026-06-21T09:37:52.0735930Z     {
2026-06-21T09:37:52.0736025Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T09:37:52.0739887Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T09:37:52.0740117Z       "requiredStages": [
2026-06-21T09:37:52.0740216Z         "impl",
2026-06-21T09:37:52.0740297Z         "unit"
2026-06-21T09:37:52.0740383Z       ],
2026-06-21T09:37:52.0740470Z       "stages": {
2026-06-21T09:37:52.0740545Z         "doc": {
2026-06-21T09:37:52.0740645Z           "complete": false,
2026-06-21T09:37:52.0740722Z           "evidence": []
2026-06-21T09:37:52.0740808Z         },
2026-06-21T09:37:52.0740889Z         "impl": {
2026-06-21T09:37:52.0740974Z           "complete": true,
2026-06-21T09:37:52.0741061Z           "evidence": [
2026-06-21T09:37:52.0741146Z             {
2026-06-21T09:37:52.0741352Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0741429Z               "line": 910
2026-06-21T09:37:52.0741517Z             }
2026-06-21T09:37:52.0741594Z           ]
2026-06-21T09:37:52.0741676Z         },
2026-06-21T09:37:52.0741767Z         "int": {
2026-06-21T09:37:52.0741856Z           "complete": false,
2026-06-21T09:37:52.0741950Z           "evidence": []
2026-06-21T09:37:52.0742027Z         },
2026-06-21T09:37:52.0742116Z         "unit": {
2026-06-21T09:37:52.0742211Z           "complete": true,
2026-06-21T09:37:52.0742291Z           "evidence": [
2026-06-21T09:37:52.0742378Z             {
2026-06-21T09:37:52.0742483Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0742582Z               "line": 1112
2026-06-21T09:37:52.0742664Z             }
2026-06-21T09:37:52.0742741Z           ]
2026-06-21T09:37:52.0742830Z         }
2026-06-21T09:37:52.0742906Z       }
2026-06-21T09:37:52.0742989Z     },
2026-06-21T09:37:52.0743074Z     {
2026-06-21T09:37:52.0743207Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T09:37:52.0747708Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T09:37:52.0747839Z       "requiredStages": [
2026-06-21T09:37:52.0747929Z         "impl",
2026-06-21T09:37:52.0748013Z         "unit"
2026-06-21T09:37:52.0748096Z       ],
2026-06-21T09:37:52.0748186Z       "stages": {
2026-06-21T09:37:52.0748272Z         "doc": {
2026-06-21T09:37:52.0748367Z           "complete": false,
2026-06-21T09:37:52.0748449Z           "evidence": []
2026-06-21T09:37:52.0748538Z         },
2026-06-21T09:37:52.0748629Z         "impl": {
2026-06-21T09:37:52.0748715Z           "complete": true,
2026-06-21T09:37:52.0748806Z           "evidence": [
2026-06-21T09:37:52.0748886Z             {
2026-06-21T09:37:52.0749055Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0749140Z               "line": 264
2026-06-21T09:37:52.0749340Z             }
2026-06-21T09:37:52.0749422Z           ]
2026-06-21T09:37:52.0749502Z         },
2026-06-21T09:37:52.0749587Z         "int": {
2026-06-21T09:37:52.0749682Z           "complete": false,
2026-06-21T09:37:52.0749777Z           "evidence": []
2026-06-21T09:37:52.0749856Z         },
2026-06-21T09:37:52.0749942Z         "unit": {
2026-06-21T09:37:52.0750032Z           "complete": true,
2026-06-21T09:37:52.0750119Z           "evidence": [
2026-06-21T09:37:52.0750204Z             {
2026-06-21T09:37:52.0750304Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0750405Z               "line": 1094
2026-06-21T09:37:52.0750638Z             },
2026-06-21T09:37:52.0750725Z             {
2026-06-21T09:37:52.0750829Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0750924Z               "line": 1225
2026-06-21T09:37:52.0751006Z             },
2026-06-21T09:37:52.0751101Z             {
2026-06-21T09:37:52.0751205Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.0751297Z               "line": 1227
2026-06-21T09:37:52.0751378Z             }
2026-06-21T09:37:52.0751454Z           ]
2026-06-21T09:37:52.0751544Z         }
2026-06-21T09:37:52.0751626Z       }
2026-06-21T09:37:52.0751711Z     },
2026-06-21T09:37:52.0751792Z     {
2026-06-21T09:37:52.0751907Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T09:37:52.0752159Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T09:37:52.0752260Z       "requiredStages": [
2026-06-21T09:37:52.0752346Z         "impl",
2026-06-21T09:37:52.0752425Z         "unit"
2026-06-21T09:37:52.0752524Z       ],
2026-06-21T09:37:52.0752606Z       "stages": {
2026-06-21T09:37:52.0752686Z         "doc": {
2026-06-21T09:37:52.0752794Z           "complete": true,
2026-06-21T09:37:52.0752871Z           "evidence": [
2026-06-21T09:37:52.0752957Z             {
2026-06-21T09:37:52.0753066Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0753156Z               "line": 139
2026-06-21T09:37:52.0753239Z             }
2026-06-21T09:37:52.0753324Z           ]
2026-06-21T09:37:52.0753409Z         },
2026-06-21T09:37:52.0753495Z         "impl": {
2026-06-21T09:37:52.0753582Z           "complete": true,
2026-06-21T09:37:52.0753668Z           "evidence": [
2026-06-21T09:37:52.0753757Z             {
2026-06-21T09:37:52.0753863Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T09:37:52.0753949Z               "line": 29
2026-06-21T09:37:52.0754044Z             },
2026-06-21T09:37:52.0754120Z             {
2026-06-21T09:37:52.0754231Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T09:37:52.0754325Z               "line": 67
2026-06-21T09:37:52.0754416Z             },
2026-06-21T09:37:52.0754498Z             {
2026-06-21T09:37:52.0754616Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.0754712Z               "line": 101
2026-06-21T09:37:52.0754794Z             },
2026-06-21T09:37:52.0754893Z             {
2026-06-21T09:37:52.0755011Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0755101Z               "line": 30
2026-06-21T09:37:52.0755183Z             },
2026-06-21T09:37:52.0755262Z             {
2026-06-21T09:37:52.0755375Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0755466Z               "line": 48
2026-06-21T09:37:52.0755553Z             }
2026-06-21T09:37:52.0755633Z           ]
2026-06-21T09:37:52.0755718Z         },
2026-06-21T09:37:52.0755810Z         "int": {
2026-06-21T09:37:52.0755905Z           "complete": false,
2026-06-21T09:37:52.0756000Z           "evidence": []
2026-06-21T09:37:52.0756091Z         },
2026-06-21T09:37:52.0756182Z         "unit": {
2026-06-21T09:37:52.0756272Z           "complete": true,
2026-06-21T09:37:52.0756357Z           "evidence": [
2026-06-21T09:37:52.0756450Z             {
2026-06-21T09:37:52.0756563Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0756750Z               "line": 162
2026-06-21T09:37:52.0756830Z             }
2026-06-21T09:37:52.0756916Z           ]
2026-06-21T09:37:52.0757001Z         }
2026-06-21T09:37:52.0757084Z       }
2026-06-21T09:37:52.0757168Z     },
2026-06-21T09:37:52.0757255Z     {
2026-06-21T09:37:52.0757365Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T09:37:52.0757737Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T09:37:52.0757845Z       "requiredStages": [
2026-06-21T09:37:52.0757930Z         "doc",
2026-06-21T09:37:52.0758006Z         "impl",
2026-06-21T09:37:52.0758103Z         "unit"
2026-06-21T09:37:52.0758249Z       ],
2026-06-21T09:37:52.0758336Z       "stages": {
2026-06-21T09:37:52.0758423Z         "doc": {
2026-06-21T09:37:52.0758526Z           "complete": true,
2026-06-21T09:37:52.0758617Z           "evidence": [
2026-06-21T09:37:52.0758704Z             {
2026-06-21T09:37:52.0758809Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0758893Z               "line": 151
2026-06-21T09:37:52.0759071Z             }
2026-06-21T09:37:52.0759142Z           ]
2026-06-21T09:37:52.0759227Z         },
2026-06-21T09:37:52.0759310Z         "impl": {
2026-06-21T09:37:52.0759400Z           "complete": true,
2026-06-21T09:37:52.0759495Z           "evidence": [
2026-06-21T09:37:52.0759576Z             {
2026-06-21T09:37:52.0759700Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0759784Z               "line": 22
2026-06-21T09:37:52.0759871Z             }
2026-06-21T09:37:52.0759953Z           ]
2026-06-21T09:37:52.0760034Z         },
2026-06-21T09:37:52.0760137Z         "int": {
2026-06-21T09:37:52.0760227Z           "complete": false,
2026-06-21T09:37:52.0760323Z           "evidence": []
2026-06-21T09:37:52.0760407Z         },
2026-06-21T09:37:52.0760488Z         "unit": {
2026-06-21T09:37:52.0760574Z           "complete": true,
2026-06-21T09:37:52.0760669Z           "evidence": [
2026-06-21T09:37:52.0760755Z             {
2026-06-21T09:37:52.0760874Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0760966Z               "line": 298
2026-06-21T09:37:52.0761046Z             }
2026-06-21T09:37:52.0761126Z           ]
2026-06-21T09:37:52.0761218Z         }
2026-06-21T09:37:52.0761304Z       }
2026-06-21T09:37:52.0761389Z     },
2026-06-21T09:37:52.0761469Z     {
2026-06-21T09:37:52.0761585Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T09:37:52.0762009Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T09:37:52.0762118Z       "requiredStages": [
2026-06-21T09:37:52.0762200Z         "impl",
2026-06-21T09:37:52.0762281Z         "unit"
2026-06-21T09:37:52.0762367Z       ],
2026-06-21T09:37:52.0762448Z       "stages": {
2026-06-21T09:37:52.0762535Z         "doc": {
2026-06-21T09:37:52.0762624Z           "complete": true,
2026-06-21T09:37:52.0762724Z           "evidence": [
2026-06-21T09:37:52.0762806Z             {
2026-06-21T09:37:52.0762915Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0763004Z               "line": 145
2026-06-21T09:37:52.0763089Z             }
2026-06-21T09:37:52.0763171Z           ]
2026-06-21T09:37:52.0763256Z         },
2026-06-21T09:37:52.0763340Z         "impl": {
2026-06-21T09:37:52.0763431Z           "complete": true,
2026-06-21T09:37:52.0763522Z           "evidence": [
2026-06-21T09:37:52.0763603Z             {
2026-06-21T09:37:52.0763726Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T09:37:52.0763814Z               "line": 160
2026-06-21T09:37:52.0763899Z             },
2026-06-21T09:37:52.0763988Z             {
2026-06-21T09:37:52.0764114Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0764204Z               "line": 200
2026-06-21T09:37:52.0764289Z             },
2026-06-21T09:37:52.0764375Z             {
2026-06-21T09:37:52.0764608Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0764694Z               "line": 298
2026-06-21T09:37:52.0764787Z             },
2026-06-21T09:37:52.0764866Z             {
2026-06-21T09:37:52.0764976Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:37:52.0765068Z               "line": 20
2026-06-21T09:37:52.0765153Z             }
2026-06-21T09:37:52.0765243Z           ]
2026-06-21T09:37:52.0765324Z         },
2026-06-21T09:37:52.0765416Z         "int": {
2026-06-21T09:37:52.0765609Z           "complete": false,
2026-06-21T09:37:52.0765695Z           "evidence": []
2026-06-21T09:37:52.0765780Z         },
2026-06-21T09:37:52.0765959Z         "unit": {
2026-06-21T09:37:52.0766060Z           "complete": true,
2026-06-21T09:37:52.0766146Z           "evidence": [
2026-06-21T09:37:52.0766231Z             {
2026-06-21T09:37:52.0766351Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0766446Z               "line": 937
2026-06-21T09:37:52.0766546Z             },
2026-06-21T09:37:52.0766627Z             {
2026-06-21T09:37:52.0766756Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T09:37:52.0766846Z               "line": 88
2026-06-21T09:37:52.0766932Z             },
2026-06-21T09:37:52.0767015Z             {
2026-06-21T09:37:52.0767123Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0767214Z               "line": 851
2026-06-21T09:37:52.0767300Z             },
2026-06-21T09:37:52.0767390Z             {
2026-06-21T09:37:52.0770194Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0770312Z               "line": 870
2026-06-21T09:37:52.0770421Z             },
2026-06-21T09:37:52.0770504Z             {
2026-06-21T09:37:52.0770655Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.0770750Z               "line": 279
2026-06-21T09:37:52.0770836Z             },
2026-06-21T09:37:52.0770916Z             {
2026-06-21T09:37:52.0771048Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:37:52.0771143Z               "line": 82
2026-06-21T09:37:52.0771225Z             },
2026-06-21T09:37:52.0771306Z             {
2026-06-21T09:37:52.0771415Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:37:52.0771506Z               "line": 99
2026-06-21T09:37:52.0771587Z             },
2026-06-21T09:37:52.0771667Z             {
2026-06-21T09:37:52.0771783Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T09:37:52.0771873Z               "line": 119
2026-06-21T09:37:52.0771958Z             }
2026-06-21T09:37:52.0772034Z           ]
2026-06-21T09:37:52.0772121Z         }
2026-06-21T09:37:52.0772207Z       }
2026-06-21T09:37:52.0772283Z     },
2026-06-21T09:37:52.0772359Z     {
2026-06-21T09:37:52.0772474Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T09:37:52.0773793Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T09:37:52.0773896Z       "requiredStages": [
2026-06-21T09:37:52.0773986Z         "doc",
2026-06-21T09:37:52.0774073Z         "impl",
2026-06-21T09:37:52.0774154Z         "unit"
2026-06-21T09:37:52.0774239Z       ],
2026-06-21T09:37:52.0774320Z       "stages": {
2026-06-21T09:37:52.0774402Z         "doc": {
2026-06-21T09:37:52.0774493Z           "complete": true,
2026-06-21T09:37:52.0774582Z           "evidence": [
2026-06-21T09:37:52.0774664Z             {
2026-06-21T09:37:52.0774778Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0774868Z               "line": 157
2026-06-21T09:37:52.0774950Z             }
2026-06-21T09:37:52.0775036Z           ]
2026-06-21T09:37:52.0775250Z         },
2026-06-21T09:37:52.0775327Z         "impl": {
2026-06-21T09:37:52.0775426Z           "complete": true,
2026-06-21T09:37:52.0775502Z           "evidence": [
2026-06-21T09:37:52.0775584Z             {
2026-06-21T09:37:52.0775718Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:37:52.0775808Z               "line": 137
2026-06-21T09:37:52.0775889Z             },
2026-06-21T09:37:52.0775971Z             {
2026-06-21T09:37:52.0776103Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0776193Z               "line": 564
2026-06-21T09:37:52.0776284Z             },
2026-06-21T09:37:52.0776458Z             {
2026-06-21T09:37:52.0776586Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0776668Z               "line": 571
2026-06-21T09:37:52.0776753Z             },
2026-06-21T09:37:52.0776834Z             {
2026-06-21T09:37:52.0776959Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0777068Z               "line": 227
2026-06-21T09:37:52.0777149Z             }
2026-06-21T09:37:52.0777236Z           ]
2026-06-21T09:37:52.0777321Z         },
2026-06-21T09:37:52.0777402Z         "int": {
2026-06-21T09:37:52.0777497Z           "complete": false,
2026-06-21T09:37:52.0777579Z           "evidence": []
2026-06-21T09:37:52.0777669Z         },
2026-06-21T09:37:52.0777749Z         "unit": {
2026-06-21T09:37:52.0777841Z           "complete": true,
2026-06-21T09:37:52.0777932Z           "evidence": [
2026-06-21T09:37:52.0778008Z             {
2026-06-21T09:37:52.0778136Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0778233Z               "line": 1622
2026-06-21T09:37:52.0778317Z             },
2026-06-21T09:37:52.0778403Z             {
2026-06-21T09:37:52.0778529Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0778627Z               "line": 1680
2026-06-21T09:37:52.0778708Z             },
2026-06-21T09:37:52.0778796Z             {
2026-06-21T09:37:52.0778918Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0779093Z               "line": 883
2026-06-21T09:37:52.0779175Z             }
2026-06-21T09:37:52.0779261Z           ]
2026-06-21T09:37:52.0779346Z         }
2026-06-21T09:37:52.0779427Z       }
2026-06-21T09:37:52.0779509Z     },
2026-06-21T09:37:52.0779595Z     {
2026-06-21T09:37:52.0779717Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T09:37:52.0779895Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T09:37:52.0779995Z       "requiredStages": [
2026-06-21T09:37:52.0780076Z         "impl",
2026-06-21T09:37:52.0780157Z         "unit"
2026-06-21T09:37:52.0780238Z       ],
2026-06-21T09:37:52.0780328Z       "stages": {
2026-06-21T09:37:52.0780405Z         "doc": {
2026-06-21T09:37:52.0780491Z           "complete": false,
2026-06-21T09:37:52.0780577Z           "evidence": []
2026-06-21T09:37:52.0780658Z         },
2026-06-21T09:37:52.0780745Z         "impl": {
2026-06-21T09:37:52.0780825Z           "complete": true,
2026-06-21T09:37:52.0780919Z           "evidence": [
2026-06-21T09:37:52.0781001Z             {
2026-06-21T09:37:52.0781112Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0781206Z               "line": 15
2026-06-21T09:37:52.0781286Z             },
2026-06-21T09:37:52.0781367Z             {
2026-06-21T09:37:52.0781495Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0781579Z               "line": 55
2026-06-21T09:37:52.0781665Z             },
2026-06-21T09:37:52.0781746Z             {
2026-06-21T09:37:52.0781861Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0781960Z               "line": 66
2026-06-21T09:37:52.0782042Z             },
2026-06-21T09:37:52.0782128Z             {
2026-06-21T09:37:52.0782237Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0782318Z               "line": 115
2026-06-21T09:37:52.0782500Z             },
2026-06-21T09:37:52.0782580Z             {
2026-06-21T09:37:52.0782696Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0782781Z               "line": 138
2026-06-21T09:37:52.0782867Z             }
2026-06-21T09:37:52.0782943Z           ]
2026-06-21T09:37:52.0783025Z         },
2026-06-21T09:37:52.0783110Z         "int": {
2026-06-21T09:37:52.0783210Z           "complete": false,
2026-06-21T09:37:52.0783302Z           "evidence": []
2026-06-21T09:37:52.0783382Z         },
2026-06-21T09:37:52.0783472Z         "unit": {
2026-06-21T09:37:52.0783553Z           "complete": true,
2026-06-21T09:37:52.0783636Z           "evidence": [
2026-06-21T09:37:52.0783816Z             {
2026-06-21T09:37:52.0783931Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0784017Z               "line": 363
2026-06-21T09:37:52.0784097Z             },
2026-06-21T09:37:52.0784181Z             {
2026-06-21T09:37:52.0784287Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0784376Z               "line": 369
2026-06-21T09:37:52.0784456Z             },
2026-06-21T09:37:52.0784541Z             {
2026-06-21T09:37:52.0784653Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0784733Z               "line": 383
2026-06-21T09:37:52.0784813Z             },
2026-06-21T09:37:52.0784895Z             {
2026-06-21T09:37:52.0785000Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0785090Z               "line": 392
2026-06-21T09:37:52.0785176Z             },
2026-06-21T09:37:52.0785258Z             {
2026-06-21T09:37:52.0785372Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0785471Z               "line": 195
2026-06-21T09:37:52.0785553Z             },
2026-06-21T09:37:52.0785639Z             {
2026-06-21T09:37:52.0785753Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0785844Z               "line": 208
2026-06-21T09:37:52.0785930Z             },
2026-06-21T09:37:52.0786024Z             {
2026-06-21T09:37:52.0786139Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0786226Z               "line": 271
2026-06-21T09:37:52.0786311Z             },
2026-06-21T09:37:52.0786392Z             {
2026-06-21T09:37:52.0786498Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0786598Z               "line": 290
2026-06-21T09:37:52.0786677Z             },
2026-06-21T09:37:52.0786762Z             {
2026-06-21T09:37:52.0786882Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.0786971Z               "line": 319
2026-06-21T09:37:52.0787041Z             }
2026-06-21T09:37:52.0787128Z           ]
2026-06-21T09:37:52.0787214Z         }
2026-06-21T09:37:52.0787295Z       }
2026-06-21T09:37:52.0787380Z     },
2026-06-21T09:37:52.0787462Z     {
2026-06-21T09:37:52.0787581Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T09:37:52.0787834Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T09:37:52.0787943Z       "requiredStages": [
2026-06-21T09:37:52.0788033Z         "impl",
2026-06-21T09:37:52.0788111Z         "unit",
2026-06-21T09:37:52.0788200Z         "int"
2026-06-21T09:37:52.0788282Z       ],
2026-06-21T09:37:52.0788367Z       "stages": {
2026-06-21T09:37:52.0788450Z         "doc": {
2026-06-21T09:37:52.0788534Z           "complete": false,
2026-06-21T09:37:52.0788629Z           "evidence": []
2026-06-21T09:37:52.0788716Z         },
2026-06-21T09:37:52.0788803Z         "impl": {
2026-06-21T09:37:52.0788886Z           "complete": true,
2026-06-21T09:37:52.0789060Z           "evidence": [
2026-06-21T09:37:52.0789155Z             {
2026-06-21T09:37:52.0789278Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0789370Z               "line": 474
2026-06-21T09:37:52.0789451Z             },
2026-06-21T09:37:52.0789539Z             {
2026-06-21T09:37:52.0789653Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0789868Z               "line": 916
2026-06-21T09:37:52.0789944Z             },
2026-06-21T09:37:52.0790026Z             {
2026-06-21T09:37:52.0790136Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0790221Z               "line": 961
2026-06-21T09:37:52.0790297Z             },
2026-06-21T09:37:52.0790380Z             {
2026-06-21T09:37:52.0790489Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.0790579Z               "line": 986
2026-06-21T09:37:52.0790660Z             },
2026-06-21T09:37:52.0790755Z             {
2026-06-21T09:37:52.0790860Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0791047Z               "line": 1800
2026-06-21T09:37:52.0791127Z             },
2026-06-21T09:37:52.0791208Z             {
2026-06-21T09:37:52.0791329Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0791409Z               "line": 2045
2026-06-21T09:37:52.0791494Z             },
2026-06-21T09:37:52.0791575Z             {
2026-06-21T09:37:52.0791691Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0791775Z               "line": 2176
2026-06-21T09:37:52.0791860Z             },
2026-06-21T09:37:52.0791946Z             {
2026-06-21T09:37:52.0792055Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0792149Z               "line": 2224
2026-06-21T09:37:52.0792239Z             },
2026-06-21T09:37:52.0792326Z             {
2026-06-21T09:37:52.0792435Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0792525Z               "line": 46
2026-06-21T09:37:52.0792612Z             },
2026-06-21T09:37:52.0792693Z             {
2026-06-21T09:37:52.0792816Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0792898Z               "line": 200
2026-06-21T09:37:52.0792984Z             },
2026-06-21T09:37:52.0793064Z             {
2026-06-21T09:37:52.0793169Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.0793256Z               "line": 132
2026-06-21T09:37:52.0793337Z             },
2026-06-21T09:37:52.0793422Z             {
2026-06-21T09:37:52.0793527Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0793618Z               "line": 137
2026-06-21T09:37:52.0793704Z             },
2026-06-21T09:37:52.0793789Z             {
2026-06-21T09:37:52.0793900Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0793990Z               "line": 183
2026-06-21T09:37:52.0794075Z             }
2026-06-21T09:37:52.0794157Z           ]
2026-06-21T09:37:52.0794238Z         },
2026-06-21T09:37:52.0794333Z         "int": {
2026-06-21T09:37:52.0794428Z           "complete": true,
2026-06-21T09:37:52.0794516Z           "evidence": [
2026-06-21T09:37:52.0794596Z             {
2026-06-21T09:37:52.0794727Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T09:37:52.0794813Z               "line": 27
2026-06-21T09:37:52.0794908Z             },
2026-06-21T09:37:52.0794988Z             {
2026-06-21T09:37:52.0795111Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T09:37:52.0795193Z               "line": 148
2026-06-21T09:37:52.0795270Z             },
2026-06-21T09:37:52.0795359Z             {
2026-06-21T09:37:52.0795470Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T09:37:52.0795556Z               "line": 200
2026-06-21T09:37:52.0795641Z             }
2026-06-21T09:37:52.0795712Z           ]
2026-06-21T09:37:52.0795799Z         },
2026-06-21T09:37:52.0795875Z         "unit": {
2026-06-21T09:37:52.0795970Z           "complete": true,
2026-06-21T09:37:52.0796061Z           "evidence": [
2026-06-21T09:37:52.0796147Z             {
2026-06-21T09:37:52.0796266Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0796351Z               "line": 366
2026-06-21T09:37:52.0796433Z             },
2026-06-21T09:37:52.0796509Z             {
2026-06-21T09:37:52.0796695Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0796781Z               "line": 398
2026-06-21T09:37:52.0796866Z             },
2026-06-21T09:37:52.0796948Z             {
2026-06-21T09:37:52.0797054Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T09:37:52.0797134Z               "line": 419
2026-06-21T09:37:52.0797219Z             },
2026-06-21T09:37:52.0797304Z             {
2026-06-21T09:37:52.0797423Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.0797508Z               "line": 628
2026-06-21T09:37:52.0797592Z             },
2026-06-21T09:37:52.0797673Z             {
2026-06-21T09:37:52.0797869Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:37:52.0797950Z               "line": 289
2026-06-21T09:37:52.0798027Z             },
2026-06-21T09:37:52.0798099Z             {
2026-06-21T09:37:52.0798212Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T09:37:52.0798298Z               "line": 230
2026-06-21T09:37:52.0798385Z             },
2026-06-21T09:37:52.0798480Z             {
2026-06-21T09:37:52.0798584Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0798666Z               "line": 526
2026-06-21T09:37:52.0798747Z             },
2026-06-21T09:37:52.0798823Z             {
2026-06-21T09:37:52.0798928Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.0799099Z               "line": 556
2026-06-21T09:37:52.0799185Z             }
2026-06-21T09:37:52.0799266Z           ]
2026-06-21T09:37:52.0799348Z         }
2026-06-21T09:37:52.0799428Z       }
2026-06-21T09:37:52.0799514Z     },
2026-06-21T09:37:52.0799611Z     {
2026-06-21T09:37:52.0799720Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T09:37:52.0801373Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T09:37:52.0801506Z       "requiredStages": [
2026-06-21T09:37:52.0801593Z         "doc",
2026-06-21T09:37:52.0801682Z         "impl",
2026-06-21T09:37:52.0801768Z         "unit"
2026-06-21T09:37:52.0801850Z       ],
2026-06-21T09:37:52.0801931Z       "stages": {
2026-06-21T09:37:52.0802016Z         "doc": {
2026-06-21T09:37:52.0802121Z           "complete": true,
2026-06-21T09:37:52.0802204Z           "evidence": [
2026-06-21T09:37:52.0802288Z             {
2026-06-21T09:37:52.0802388Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0802473Z               "line": 314
2026-06-21T09:37:52.0802554Z             }
2026-06-21T09:37:52.0802643Z           ]
2026-06-21T09:37:52.0802733Z         },
2026-06-21T09:37:52.0802819Z         "impl": {
2026-06-21T09:37:52.0802901Z           "complete": true,
2026-06-21T09:37:52.0802986Z           "evidence": [
2026-06-21T09:37:52.0803066Z             {
2026-06-21T09:37:52.0803201Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T09:37:52.0803291Z               "line": 33
2026-06-21T09:37:52.0803381Z             },
2026-06-21T09:37:52.0803463Z             {
2026-06-21T09:37:52.0803587Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T09:37:52.0803677Z               "line": 39
2026-06-21T09:37:52.0803759Z             }
2026-06-21T09:37:52.0803844Z           ]
2026-06-21T09:37:52.0803930Z         },
2026-06-21T09:37:52.0804015Z         "int": {
2026-06-21T09:37:52.0804102Z           "complete": false,
2026-06-21T09:37:52.0804192Z           "evidence": []
2026-06-21T09:37:52.0804273Z         },
2026-06-21T09:37:52.0804358Z         "unit": {
2026-06-21T09:37:52.0804559Z           "complete": true,
2026-06-21T09:37:52.0804645Z           "evidence": [
2026-06-21T09:37:52.0804732Z             {
2026-06-21T09:37:52.0804859Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T09:37:52.0804950Z               "line": 95
2026-06-21T09:37:52.0805032Z             }
2026-06-21T09:37:52.0805128Z           ]
2026-06-21T09:37:52.0805207Z         }
2026-06-21T09:37:52.0805301Z       }
2026-06-21T09:37:52.0805378Z     },
2026-06-21T09:37:52.0805463Z     {
2026-06-21T09:37:52.0805572Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T09:37:52.0807916Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T09:37:52.0808120Z       "requiredStages": [
2026-06-21T09:37:52.0808214Z         "impl",
2026-06-21T09:37:52.0808296Z         "unit"
2026-06-21T09:37:52.0808383Z       ],
2026-06-21T09:37:52.0808476Z       "stages": {
2026-06-21T09:37:52.0808557Z         "doc": {
2026-06-21T09:37:52.0808654Z           "complete": false,
2026-06-21T09:37:52.0808744Z           "evidence": []
2026-06-21T09:37:52.0808834Z         },
2026-06-21T09:37:52.0808912Z         "impl": {
2026-06-21T09:37:52.0809101Z           "complete": true,
2026-06-21T09:37:52.0809197Z           "evidence": [
2026-06-21T09:37:52.0809293Z             {
2026-06-21T09:37:52.0809435Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0809516Z               "line": 488
2026-06-21T09:37:52.0809603Z             }
2026-06-21T09:37:52.0809683Z           ]
2026-06-21T09:37:52.0809773Z         },
2026-06-21T09:37:52.0809856Z         "int": {
2026-06-21T09:37:52.0809941Z           "complete": false,
2026-06-21T09:37:52.0810031Z           "evidence": []
2026-06-21T09:37:52.0810117Z         },
2026-06-21T09:37:52.0810209Z         "unit": {
2026-06-21T09:37:52.0810294Z           "complete": true,
2026-06-21T09:37:52.0810380Z           "evidence": [
2026-06-21T09:37:52.0810466Z             {
2026-06-21T09:37:52.0810613Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0810707Z               "line": 1466
2026-06-21T09:37:52.0810783Z             }
2026-06-21T09:37:52.0810870Z           ]
2026-06-21T09:37:52.0810956Z         }
2026-06-21T09:37:52.0811041Z       }
2026-06-21T09:37:52.0811127Z     },
2026-06-21T09:37:52.0811214Z     {
2026-06-21T09:37:52.0811332Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T09:37:52.0813456Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T09:37:52.0813565Z       "requiredStages": [
2026-06-21T09:37:52.0813650Z         "unit"
2026-06-21T09:37:52.0813737Z       ],
2026-06-21T09:37:52.0813927Z       "stages": {
2026-06-21T09:37:52.0814013Z         "doc": {
2026-06-21T09:37:52.0814104Z           "complete": false,
2026-06-21T09:37:52.0814194Z           "evidence": []
2026-06-21T09:37:52.0814280Z         },
2026-06-21T09:37:52.0814362Z         "impl": {
2026-06-21T09:37:52.0814447Z           "complete": true,
2026-06-21T09:37:52.0814547Z           "evidence": [
2026-06-21T09:37:52.0814628Z             {
2026-06-21T09:37:52.0814743Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0814838Z               "line": 3520
2026-06-21T09:37:52.0814924Z             },
2026-06-21T09:37:52.0815006Z             {
2026-06-21T09:37:52.0815219Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0815316Z               "line": 3572
2026-06-21T09:37:52.0815401Z             },
2026-06-21T09:37:52.0815482Z             {
2026-06-21T09:37:52.0815588Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0815679Z               "line": 3617
2026-06-21T09:37:52.0815767Z             },
2026-06-21T09:37:52.0815852Z             {
2026-06-21T09:37:52.0815972Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0816061Z               "line": 92
2026-06-21T09:37:52.0816151Z             },
2026-06-21T09:37:52.0816241Z             {
2026-06-21T09:37:52.0816342Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0816432Z               "line": 148
2026-06-21T09:37:52.0816512Z             },
2026-06-21T09:37:52.0816595Z             {
2026-06-21T09:37:52.0816695Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0816785Z               "line": 192
2026-06-21T09:37:52.0816871Z             },
2026-06-21T09:37:52.0816952Z             {
2026-06-21T09:37:52.0817052Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0817138Z               "line": 200
2026-06-21T09:37:52.0817219Z             },
2026-06-21T09:37:52.0817300Z             {
2026-06-21T09:37:52.0817414Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0817500Z               "line": 211
2026-06-21T09:37:52.0817587Z             },
2026-06-21T09:37:52.0817667Z             {
2026-06-21T09:37:52.0817777Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0817869Z               "line": 265
2026-06-21T09:37:52.0817949Z             },
2026-06-21T09:37:52.0818029Z             {
2026-06-21T09:37:52.0818135Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0818221Z               "line": 279
2026-06-21T09:37:52.0818301Z             }
2026-06-21T09:37:52.0818386Z           ]
2026-06-21T09:37:52.0818472Z         },
2026-06-21T09:37:52.0818562Z         "int": {
2026-06-21T09:37:52.0818660Z           "complete": false,
2026-06-21T09:37:52.0818745Z           "evidence": []
2026-06-21T09:37:52.0818822Z         },
2026-06-21T09:37:52.0818914Z         "unit": {
2026-06-21T09:37:52.0819074Z           "complete": true,
2026-06-21T09:37:52.0819166Z           "evidence": [
2026-06-21T09:37:52.0819257Z             {
2026-06-21T09:37:52.0819399Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0819495Z               "line": 419
2026-06-21T09:37:52.0819576Z             },
2026-06-21T09:37:52.0819671Z             {
2026-06-21T09:37:52.0819810Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0819905Z               "line": 470
2026-06-21T09:37:52.0820000Z             },
2026-06-21T09:37:52.0820076Z             {
2026-06-21T09:37:52.0820191Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0820287Z               "line": 499
2026-06-21T09:37:52.0820396Z             },
2026-06-21T09:37:52.0820478Z             {
2026-06-21T09:37:52.0820581Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0820672Z               "line": 526
2026-06-21T09:37:52.0820755Z             }
2026-06-21T09:37:52.0820844Z           ]
2026-06-21T09:37:52.0820930Z         }
2026-06-21T09:37:52.0821017Z       }
2026-06-21T09:37:52.0821187Z     },
2026-06-21T09:37:52.0821296Z     {
2026-06-21T09:37:52.0821415Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T09:37:52.0821605Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T09:37:52.0821702Z       "requiredStages": [
2026-06-21T09:37:52.0821779Z         "impl",
2026-06-21T09:37:52.0821869Z         "unit"
2026-06-21T09:37:52.0821954Z       ],
2026-06-21T09:37:52.0822045Z       "stages": {
2026-06-21T09:37:52.0822126Z         "doc": {
2026-06-21T09:37:52.0822240Z           "complete": false,
2026-06-21T09:37:52.0822336Z           "evidence": []
2026-06-21T09:37:52.0822422Z         },
2026-06-21T09:37:52.0822607Z         "impl": {
2026-06-21T09:37:52.0822699Z           "complete": true,
2026-06-21T09:37:52.0822798Z           "evidence": [
2026-06-21T09:37:52.0822874Z             {
2026-06-21T09:37:52.0822995Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0823089Z               "line": 62
2026-06-21T09:37:52.0823194Z             },
2026-06-21T09:37:52.0823285Z             {
2026-06-21T09:37:52.0823409Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0823484Z               "line": 71
2026-06-21T09:37:52.0823578Z             },
2026-06-21T09:37:52.0823660Z             {
2026-06-21T09:37:52.0823787Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0823877Z               "line": 80
2026-06-21T09:37:52.0823963Z             },
2026-06-21T09:37:52.0824050Z             {
2026-06-21T09:37:52.0824182Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.0824273Z               "line": 88
2026-06-21T09:37:52.0824359Z             },
2026-06-21T09:37:52.0824458Z             {
2026-06-21T09:37:52.0824564Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0824650Z               "line": 33
2026-06-21T09:37:52.0824736Z             },
2026-06-21T09:37:52.0824816Z             {
2026-06-21T09:37:52.0824937Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0825022Z               "line": 65
2026-06-21T09:37:52.0825131Z             },
2026-06-21T09:37:52.0825213Z             {
2026-06-21T09:37:52.0825317Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0825408Z               "line": 74
2026-06-21T09:37:52.0825493Z             },
2026-06-21T09:37:52.0825576Z             {
2026-06-21T09:37:52.0825684Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0825775Z               "line": 93
2026-06-21T09:37:52.0825857Z             },
2026-06-21T09:37:52.0825943Z             {
2026-06-21T09:37:52.0826051Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0826186Z               "line": 102
2026-06-21T09:37:52.0826272Z             },
2026-06-21T09:37:52.0826356Z             {
2026-06-21T09:37:52.0826470Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0826556Z               "line": 111
2026-06-21T09:37:52.0826649Z             },
2026-06-21T09:37:52.0826725Z             {
2026-06-21T09:37:52.0826840Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0826936Z               "line": 122
2026-06-21T09:37:52.0827030Z             },
2026-06-21T09:37:52.0827131Z             {
2026-06-21T09:37:52.0827240Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0827325Z               "line": 140
2026-06-21T09:37:52.0827421Z             },
2026-06-21T09:37:52.0827508Z             {
2026-06-21T09:37:52.0827617Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0827707Z               "line": 149
2026-06-21T09:37:52.0827799Z             },
2026-06-21T09:37:52.0827874Z             {
2026-06-21T09:37:52.0827979Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0828070Z               "line": 158
2026-06-21T09:37:52.0828157Z             },
2026-06-21T09:37:52.0828241Z             {
2026-06-21T09:37:52.0828351Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0828528Z               "line": 169
2026-06-21T09:37:52.0828604Z             },
2026-06-21T09:37:52.0828685Z             {
2026-06-21T09:37:52.0828796Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0828885Z               "line": 177
2026-06-21T09:37:52.0829041Z             },
2026-06-21T09:37:52.0829132Z             {
2026-06-21T09:37:52.0829235Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0829315Z               "line": 186
2026-06-21T09:37:52.0829402Z             },
2026-06-21T09:37:52.0829484Z             {
2026-06-21T09:37:52.0829587Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0829784Z               "line": 195
2026-06-21T09:37:52.0829869Z             },
2026-06-21T09:37:52.0829954Z             {
2026-06-21T09:37:52.0830056Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0830151Z               "line": 204
2026-06-21T09:37:52.0830231Z             },
2026-06-21T09:37:52.0830322Z             {
2026-06-21T09:37:52.0830432Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0830513Z               "line": 216
2026-06-21T09:37:52.0830593Z             },
2026-06-21T09:37:52.0830671Z             {
2026-06-21T09:37:52.0830780Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0830875Z               "line": 223
2026-06-21T09:37:52.0830947Z             },
2026-06-21T09:37:52.0831024Z             {
2026-06-21T09:37:52.0831123Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0831209Z               "line": 232
2026-06-21T09:37:52.0831291Z             },
2026-06-21T09:37:52.0831386Z             {
2026-06-21T09:37:52.0831495Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0831577Z               "line": 239
2026-06-21T09:37:52.0831668Z             },
2026-06-21T09:37:52.0831747Z             {
2026-06-21T09:37:52.0831856Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0831947Z               "line": 306
2026-06-21T09:37:52.0832029Z             },
2026-06-21T09:37:52.0832114Z             {
2026-06-21T09:37:52.0832219Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0832315Z               "line": 318
2026-06-21T09:37:52.0832401Z             },
2026-06-21T09:37:52.0832476Z             {
2026-06-21T09:37:52.0832577Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0832672Z               "line": 405
2026-06-21T09:37:52.0832753Z             }
2026-06-21T09:37:52.0832833Z           ]
2026-06-21T09:37:52.0832920Z         },
2026-06-21T09:37:52.0833001Z         "int": {
2026-06-21T09:37:52.0833096Z           "complete": false,
2026-06-21T09:37:52.0833177Z           "evidence": []
2026-06-21T09:37:52.0833254Z         },
2026-06-21T09:37:52.0833339Z         "unit": {
2026-06-21T09:37:52.0833425Z           "complete": true,
2026-06-21T09:37:52.0833521Z           "evidence": [
2026-06-21T09:37:52.0833607Z             {
2026-06-21T09:37:52.0833720Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0833807Z               "line": 487
2026-06-21T09:37:52.0833884Z             },
2026-06-21T09:37:52.0833969Z             {
2026-06-21T09:37:52.0834077Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0834168Z               "line": 528
2026-06-21T09:37:52.0834249Z             },
2026-06-21T09:37:52.0834333Z             {
2026-06-21T09:37:52.0834451Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0834537Z               "line": 541
2026-06-21T09:37:52.0834610Z             },
2026-06-21T09:37:52.0834694Z             {
2026-06-21T09:37:52.0834809Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0834896Z               "line": 627
2026-06-21T09:37:52.0834976Z             }
2026-06-21T09:37:52.0835057Z           ]
2026-06-21T09:37:52.0835139Z         }
2026-06-21T09:37:52.0835229Z       }
2026-06-21T09:37:52.0835419Z     },
2026-06-21T09:37:52.0835506Z     {
2026-06-21T09:37:52.0835620Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T09:37:52.0835811Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T09:37:52.0835915Z       "requiredStages": [
2026-06-21T09:37:52.0836001Z         "impl",
2026-06-21T09:37:52.0836093Z         "unit"
2026-06-21T09:37:52.0836179Z       ],
2026-06-21T09:37:52.0836268Z       "stages": {
2026-06-21T09:37:52.0836354Z         "doc": {
2026-06-21T09:37:52.0836441Z           "complete": false,
2026-06-21T09:37:52.0836536Z           "evidence": []
2026-06-21T09:37:52.0836617Z         },
2026-06-21T09:37:52.0836775Z         "impl": {
2026-06-21T09:37:52.0836869Z           "complete": true,
2026-06-21T09:37:52.0836964Z           "evidence": [
2026-06-21T09:37:52.0837045Z             {
2026-06-21T09:37:52.0837149Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.0837247Z               "line": 175
2026-06-21T09:37:52.0837332Z             },
2026-06-21T09:37:52.0837429Z             {
2026-06-21T09:37:52.0837548Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.0837643Z               "line": 171
2026-06-21T09:37:52.0837725Z             }
2026-06-21T09:37:52.0837805Z           ]
2026-06-21T09:37:52.0837890Z         },
2026-06-21T09:37:52.0837971Z         "int": {
2026-06-21T09:37:52.0838059Z           "complete": false,
2026-06-21T09:37:52.0838144Z           "evidence": []
2026-06-21T09:37:52.0838224Z         },
2026-06-21T09:37:52.0838301Z         "unit": {
2026-06-21T09:37:52.0838397Z           "complete": true,
2026-06-21T09:37:52.0838487Z           "evidence": [
2026-06-21T09:37:52.0838582Z             {
2026-06-21T09:37:52.0838693Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.0838777Z               "line": 297
2026-06-21T09:37:52.0838868Z             },
2026-06-21T09:37:52.0838935Z             {
2026-06-21T09:37:52.0839116Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.0839221Z               "line": 836
2026-06-21T09:37:52.0839303Z             },
2026-06-21T09:37:52.0841817Z             {
2026-06-21T09:37:52.0841974Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.0842069Z               "line": 849
2026-06-21T09:37:52.0842152Z             }
2026-06-21T09:37:52.0842228Z           ]
2026-06-21T09:37:52.0842317Z         }
2026-06-21T09:37:52.0842402Z       }
2026-06-21T09:37:52.0842483Z     },
2026-06-21T09:37:52.0842570Z     {
2026-06-21T09:37:52.0842684Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T09:37:52.0842822Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T09:37:52.0842932Z       "requiredStages": [
2026-06-21T09:37:52.0843017Z         "impl",
2026-06-21T09:37:52.0843103Z         "unit"
2026-06-21T09:37:52.0843185Z       ],
2026-06-21T09:37:52.0843270Z       "stages": {
2026-06-21T09:37:52.0843360Z         "doc": {
2026-06-21T09:37:52.0843451Z           "complete": false,
2026-06-21T09:37:52.0843542Z           "evidence": []
2026-06-21T09:37:52.0843623Z         },
2026-06-21T09:37:52.0843699Z         "impl": {
2026-06-21T09:37:52.0843791Z           "complete": true,
2026-06-21T09:37:52.0843876Z           "evidence": [
2026-06-21T09:37:52.0843957Z             {
2026-06-21T09:37:52.0844081Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0844162Z               "line": 116
2026-06-21T09:37:52.0844247Z             },
2026-06-21T09:37:52.0844329Z             {
2026-06-21T09:37:52.0844454Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.0844533Z               "line": 507
2026-06-21T09:37:52.0844613Z             }
2026-06-21T09:37:52.0844690Z           ]
2026-06-21T09:37:52.0844776Z         },
2026-06-21T09:37:52.0844860Z         "int": {
2026-06-21T09:37:52.0844949Z           "complete": false,
2026-06-21T09:37:52.0845045Z           "evidence": []
2026-06-21T09:37:52.0845127Z         },
2026-06-21T09:37:52.0845212Z         "unit": {
2026-06-21T09:37:52.0845427Z           "complete": true,
2026-06-21T09:37:52.0845518Z           "evidence": [
2026-06-21T09:37:52.0845607Z             {
2026-06-21T09:37:52.0845728Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.0845813Z               "line": 541
2026-06-21T09:37:52.0845899Z             }
2026-06-21T09:37:52.0845980Z           ]
2026-06-21T09:37:52.0846066Z         }
2026-06-21T09:37:52.0846151Z       }
2026-06-21T09:37:52.0846232Z     },
2026-06-21T09:37:52.0846313Z     {
2026-06-21T09:37:52.0846438Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T09:37:52.0846590Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T09:37:52.0846814Z       "requiredStages": [
2026-06-21T09:37:52.0846895Z         "impl",
2026-06-21T09:37:52.0846987Z         "unit"
2026-06-21T09:37:52.0847068Z       ],
2026-06-21T09:37:52.0847152Z       "stages": {
2026-06-21T09:37:52.0847244Z         "doc": {
2026-06-21T09:37:52.0847340Z           "complete": false,
2026-06-21T09:37:52.0847439Z           "evidence": []
2026-06-21T09:37:52.0847509Z         },
2026-06-21T09:37:52.0847600Z         "impl": {
2026-06-21T09:37:52.0847690Z           "complete": true,
2026-06-21T09:37:52.0847770Z           "evidence": [
2026-06-21T09:37:52.0847850Z             {
2026-06-21T09:37:52.0848027Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0848113Z               "line": 552
2026-06-21T09:37:52.0848203Z             },
2026-06-21T09:37:52.0848290Z             {
2026-06-21T09:37:52.0848414Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0848527Z               "line": 28
2026-06-21T09:37:52.0848643Z             }
2026-06-21T09:37:52.0848729Z           ]
2026-06-21T09:37:52.0848808Z         },
2026-06-21T09:37:52.0848895Z         "int": {
2026-06-21T09:37:52.0849047Z           "complete": false,
2026-06-21T09:37:52.0849147Z           "evidence": []
2026-06-21T09:37:52.0849224Z         },
2026-06-21T09:37:52.0849315Z         "unit": {
2026-06-21T09:37:52.0849400Z           "complete": true,
2026-06-21T09:37:52.0849495Z           "evidence": [
2026-06-21T09:37:52.0849577Z             {
2026-06-21T09:37:52.0849743Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.0849835Z               "line": 229
2026-06-21T09:37:52.0849912Z             }
2026-06-21T09:37:52.0850014Z           ]
2026-06-21T09:37:52.0850095Z         }
2026-06-21T09:37:52.0850185Z       }
2026-06-21T09:37:52.0850276Z     },
2026-06-21T09:37:52.0850402Z     {
2026-06-21T09:37:52.0850527Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T09:37:52.0850656Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T09:37:52.0850755Z       "requiredStages": [],
2026-06-21T09:37:52.0850837Z       "stages": {
2026-06-21T09:37:52.0850932Z         "doc": {
2026-06-21T09:37:52.0851012Z           "complete": false,
2026-06-21T09:37:52.0851098Z           "evidence": []
2026-06-21T09:37:52.0851186Z         },
2026-06-21T09:37:52.0851281Z         "impl": {
2026-06-21T09:37:52.0851370Z           "complete": false,
2026-06-21T09:37:52.0851452Z           "evidence": []
2026-06-21T09:37:52.0851533Z         },
2026-06-21T09:37:52.0851614Z         "int": {
2026-06-21T09:37:52.0851695Z           "complete": false,
2026-06-21T09:37:52.0851786Z           "evidence": []
2026-06-21T09:37:52.0851862Z         },
2026-06-21T09:37:52.0851948Z         "unit": {
2026-06-21T09:37:52.0852034Z           "complete": false,
2026-06-21T09:37:52.0852130Z           "evidence": []
2026-06-21T09:37:52.0852210Z         }
2026-06-21T09:37:52.0852296Z       }
2026-06-21T09:37:52.0852367Z     },
2026-06-21T09:37:52.0852450Z     {
2026-06-21T09:37:52.0852567Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T09:37:52.0852712Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T09:37:52.0852807Z       "requiredStages": [
2026-06-21T09:37:52.0852886Z         "impl",
2026-06-21T09:37:52.0852971Z         "unit"
2026-06-21T09:37:52.0853168Z       ],
2026-06-21T09:37:52.0853253Z       "stages": {
2026-06-21T09:37:52.0853343Z         "doc": {
2026-06-21T09:37:52.0853421Z           "complete": false,
2026-06-21T09:37:52.0853516Z           "evidence": []
2026-06-21T09:37:52.0853596Z         },
2026-06-21T09:37:52.0853682Z         "impl": {
2026-06-21T09:37:52.0853773Z           "complete": true,
2026-06-21T09:37:52.0853859Z           "evidence": [
2026-06-21T09:37:52.0853944Z             {
2026-06-21T09:37:52.0854055Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T09:37:52.0854140Z               "line": 19
2026-06-21T09:37:52.0854216Z             },
2026-06-21T09:37:52.0854302Z             {
2026-06-21T09:37:52.0854526Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0854617Z               "line": 463
2026-06-21T09:37:52.0854699Z             },
2026-06-21T09:37:52.0854779Z             {
2026-06-21T09:37:52.0854893Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0854985Z               "line": 499
2026-06-21T09:37:52.0855070Z             },
2026-06-21T09:37:52.0855160Z             {
2026-06-21T09:37:52.0855264Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0855345Z               "line": 547
2026-06-21T09:37:52.0855430Z             },
2026-06-21T09:37:52.0855510Z             {
2026-06-21T09:37:52.0855629Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:37:52.0855720Z               "line": 15
2026-06-21T09:37:52.0855801Z             },
2026-06-21T09:37:52.0855886Z             {
2026-06-21T09:37:52.0856002Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:37:52.0856087Z               "line": 48
2026-06-21T09:37:52.0856172Z             },
2026-06-21T09:37:52.0856254Z             {
2026-06-21T09:37:52.0856378Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:37:52.0856473Z               "line": 119
2026-06-21T09:37:52.0856554Z             },
2026-06-21T09:37:52.0856645Z             {
2026-06-21T09:37:52.0856759Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0856850Z               "line": 3948
2026-06-21T09:37:52.0856932Z             }
2026-06-21T09:37:52.0857017Z           ]
2026-06-21T09:37:52.0857107Z         },
2026-06-21T09:37:52.0857189Z         "int": {
2026-06-21T09:37:52.0857289Z           "complete": false,
2026-06-21T09:37:52.0857379Z           "evidence": []
2026-06-21T09:37:52.0857469Z         },
2026-06-21T09:37:52.0857552Z         "unit": {
2026-06-21T09:37:52.0857651Z           "complete": true,
2026-06-21T09:37:52.0857742Z           "evidence": [
2026-06-21T09:37:52.0857828Z             {
2026-06-21T09:37:52.0857957Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0858046Z               "line": 765
2026-06-21T09:37:52.0858126Z             },
2026-06-21T09:37:52.0858208Z             {
2026-06-21T09:37:52.0858320Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:37:52.0858410Z               "line": 165
2026-06-21T09:37:52.0858496Z             },
2026-06-21T09:37:52.0858578Z             {
2026-06-21T09:37:52.0858683Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T09:37:52.0858777Z               "line": 175
2026-06-21T09:37:52.0858855Z             }
2026-06-21T09:37:52.0859006Z           ]
2026-06-21T09:37:52.0859092Z         }
2026-06-21T09:37:52.0859164Z       }
2026-06-21T09:37:52.0859250Z     },
2026-06-21T09:37:52.0859331Z     {
2026-06-21T09:37:52.0859445Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T09:37:52.0860346Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T09:37:52.0860462Z       "requiredStages": [
2026-06-21T09:37:52.0860556Z         "impl",
2026-06-21T09:37:52.0860636Z         "unit"
2026-06-21T09:37:52.0860836Z       ],
2026-06-21T09:37:52.0860920Z       "stages": {
2026-06-21T09:37:52.0861005Z         "doc": {
2026-06-21T09:37:52.0861106Z           "complete": false,
2026-06-21T09:37:52.0861193Z           "evidence": []
2026-06-21T09:37:52.0861272Z         },
2026-06-21T09:37:52.0861358Z         "impl": {
2026-06-21T09:37:52.0861455Z           "complete": true,
2026-06-21T09:37:52.0861536Z           "evidence": [
2026-06-21T09:37:52.0861625Z             {
2026-06-21T09:37:52.0861731Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0861812Z               "line": 192
2026-06-21T09:37:52.0861897Z             },
2026-06-21T09:37:52.0862080Z             {
2026-06-21T09:37:52.0862198Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0862279Z               "line": 279
2026-06-21T09:37:52.0862361Z             }
2026-06-21T09:37:52.0862450Z           ]
2026-06-21T09:37:52.0862536Z         },
2026-06-21T09:37:52.0862622Z         "int": {
2026-06-21T09:37:52.0862724Z           "complete": false,
2026-06-21T09:37:52.0862812Z           "evidence": []
2026-06-21T09:37:52.0862894Z         },
2026-06-21T09:37:52.0862981Z         "unit": {
2026-06-21T09:37:52.0863076Z           "complete": true,
2026-06-21T09:37:52.0863161Z           "evidence": [
2026-06-21T09:37:52.0863247Z             {
2026-06-21T09:37:52.0863353Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0863451Z               "line": 470
2026-06-21T09:37:52.0863532Z             },
2026-06-21T09:37:52.0863622Z             {
2026-06-21T09:37:52.0863733Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.0863813Z               "line": 526
2026-06-21T09:37:52.0863908Z             }
2026-06-21T09:37:52.0863986Z           ]
2026-06-21T09:37:52.0864072Z         }
2026-06-21T09:37:52.0864156Z       }
2026-06-21T09:37:52.0864233Z     },
2026-06-21T09:37:52.0864315Z     {
2026-06-21T09:37:52.0864433Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T09:37:52.0868234Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T09:37:52.0868364Z       "requiredStages": [
2026-06-21T09:37:52.0868456Z         "impl",
2026-06-21T09:37:52.0868540Z         "unit",
2026-06-21T09:37:52.0868629Z         "int"
2026-06-21T09:37:52.0868715Z       ],
2026-06-21T09:37:52.0868806Z       "stages": {
2026-06-21T09:37:52.0868890Z         "doc": {
2026-06-21T09:37:52.0869219Z           "complete": false,
2026-06-21T09:37:52.0869323Z           "evidence": []
2026-06-21T09:37:52.0869415Z         },
2026-06-21T09:37:52.0869505Z         "impl": {
2026-06-21T09:37:52.0869600Z           "complete": true,
2026-06-21T09:37:52.0869686Z           "evidence": [
2026-06-21T09:37:52.0869772Z             {
2026-06-21T09:37:52.0869910Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0870106Z               "line": 116
2026-06-21T09:37:52.0870192Z             },
2026-06-21T09:37:52.0870277Z             {
2026-06-21T09:37:52.0870406Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.0870491Z               "line": 132
2026-06-21T09:37:52.0870577Z             },
2026-06-21T09:37:52.0870665Z             {
2026-06-21T09:37:52.0870787Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.0870878Z               "line": 434
2026-06-21T09:37:52.0870960Z             },
2026-06-21T09:37:52.0871046Z             {
2026-06-21T09:37:52.0871168Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0871349Z               "line": 139
2026-06-21T09:37:52.0871433Z             },
2026-06-21T09:37:52.0871513Z             {
2026-06-21T09:37:52.0871623Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0871714Z               "line": 326
2026-06-21T09:37:52.0871804Z             },
2026-06-21T09:37:52.0871895Z             {
2026-06-21T09:37:52.0872006Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0872096Z               "line": 555
2026-06-21T09:37:52.0872176Z             }
2026-06-21T09:37:52.0872258Z           ]
2026-06-21T09:37:52.0872344Z         },
2026-06-21T09:37:52.0872434Z         "int": {
2026-06-21T09:37:52.0872529Z           "complete": true,
2026-06-21T09:37:52.0872616Z           "evidence": [
2026-06-21T09:37:52.0872696Z             {
2026-06-21T09:37:52.0872829Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T09:37:52.0872926Z               "line": 32
2026-06-21T09:37:52.0873011Z             }
2026-06-21T09:37:52.0873092Z           ]
2026-06-21T09:37:52.0873178Z         },
2026-06-21T09:37:52.0873260Z         "unit": {
2026-06-21T09:37:52.0873349Z           "complete": true,
2026-06-21T09:37:52.0873435Z           "evidence": [
2026-06-21T09:37:52.0873522Z             {
2026-06-21T09:37:52.0873645Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0873736Z               "line": 625
2026-06-21T09:37:52.0873822Z             },
2026-06-21T09:37:52.0873904Z             {
2026-06-21T09:37:52.0874030Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0874125Z               "line": 646
2026-06-21T09:37:52.0874211Z             },
2026-06-21T09:37:52.0874294Z             {
2026-06-21T09:37:52.0874402Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0874493Z               "line": 662
2026-06-21T09:37:52.0874565Z             },
2026-06-21T09:37:52.0874651Z             {
2026-06-21T09:37:52.0874773Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0874861Z               "line": 680
2026-06-21T09:37:52.0874946Z             },
2026-06-21T09:37:52.0875031Z             {
2026-06-21T09:37:52.0875146Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0875241Z               "line": 704
2026-06-21T09:37:52.0875327Z             }
2026-06-21T09:37:52.0875413Z           ]
2026-06-21T09:37:52.0875500Z         }
2026-06-21T09:37:52.0875584Z       }
2026-06-21T09:37:52.0875660Z     },
2026-06-21T09:37:52.0875737Z     {
2026-06-21T09:37:52.0875843Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T09:37:52.0875999Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T09:37:52.0876100Z       "requiredStages": [
2026-06-21T09:37:52.0876186Z         "impl",
2026-06-21T09:37:52.0876275Z         "unit"
2026-06-21T09:37:52.0876360Z       ],
2026-06-21T09:37:52.0876451Z       "stages": {
2026-06-21T09:37:52.0876545Z         "doc": {
2026-06-21T09:37:52.0876645Z           "complete": false,
2026-06-21T09:37:52.0876740Z           "evidence": []
2026-06-21T09:37:52.0876812Z         },
2026-06-21T09:37:52.0876892Z         "impl": {
2026-06-21T09:37:52.0876987Z           "complete": true,
2026-06-21T09:37:52.0877069Z           "evidence": [
2026-06-21T09:37:52.0877254Z             {
2026-06-21T09:37:52.0877379Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0877474Z               "line": 35
2026-06-21T09:37:52.0877555Z             }
2026-06-21T09:37:52.0877640Z           ]
2026-06-21T09:37:52.0877723Z         },
2026-06-21T09:37:52.0877823Z         "int": {
2026-06-21T09:37:52.0877912Z           "complete": false,
2026-06-21T09:37:52.0878009Z           "evidence": []
2026-06-21T09:37:52.0878090Z         },
2026-06-21T09:37:52.0878180Z         "unit": {
2026-06-21T09:37:52.0878266Z           "complete": true,
2026-06-21T09:37:52.0878348Z           "evidence": [
2026-06-21T09:37:52.0878428Z             {
2026-06-21T09:37:52.0879016Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T09:37:52.0879109Z               "line": 220
2026-06-21T09:37:52.0879190Z             }
2026-06-21T09:37:52.0879280Z           ]
2026-06-21T09:37:52.0879380Z         }
2026-06-21T09:37:52.0879488Z       }
2026-06-21T09:37:52.0879573Z     },
2026-06-21T09:37:52.0879665Z     {
2026-06-21T09:37:52.0879774Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T09:37:52.0882871Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T09:37:52.0882994Z       "requiredStages": [
2026-06-21T09:37:52.0883079Z         "impl",
2026-06-21T09:37:52.0883162Z         "unit",
2026-06-21T09:37:52.0883247Z         "int"
2026-06-21T09:37:52.0883333Z       ],
2026-06-21T09:37:52.0883418Z       "stages": {
2026-06-21T09:37:52.0883505Z         "doc": {
2026-06-21T09:37:52.0883604Z           "complete": false,
2026-06-21T09:37:52.0883690Z           "evidence": []
2026-06-21T09:37:52.0883787Z         },
2026-06-21T09:37:52.0883872Z         "impl": {
2026-06-21T09:37:52.0883962Z           "complete": true,
2026-06-21T09:37:52.0884048Z           "evidence": [
2026-06-21T09:37:52.0884130Z             {
2026-06-21T09:37:52.0884262Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.0884353Z               "line": 202
2026-06-21T09:37:52.0884449Z             },
2026-06-21T09:37:52.0884530Z             {
2026-06-21T09:37:52.0884638Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:37:52.0884728Z               "line": 107
2026-06-21T09:37:52.0884815Z             },
2026-06-21T09:37:52.0884901Z             {
2026-06-21T09:37:52.0885000Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:37:52.0885086Z               "line": 138
2026-06-21T09:37:52.0885177Z             },
2026-06-21T09:37:52.0885262Z             {
2026-06-21T09:37:52.0885373Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0885468Z               "line": 209
2026-06-21T09:37:52.0885558Z             },
2026-06-21T09:37:52.0885644Z             {
2026-06-21T09:37:52.0885755Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0885844Z               "line": 246
2026-06-21T09:37:52.0885929Z             },
2026-06-21T09:37:52.0886017Z             {
2026-06-21T09:37:52.0886268Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.0886365Z               "line": 379
2026-06-21T09:37:52.0886450Z             }
2026-06-21T09:37:52.0886536Z           ]
2026-06-21T09:37:52.0886617Z         },
2026-06-21T09:37:52.0886704Z         "int": {
2026-06-21T09:37:52.0886798Z           "complete": true,
2026-06-21T09:37:52.0886888Z           "evidence": [
2026-06-21T09:37:52.0886974Z             {
2026-06-21T09:37:52.0887101Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T09:37:52.0887195Z               "line": 17
2026-06-21T09:37:52.0887281Z             }
2026-06-21T09:37:52.0887458Z           ]
2026-06-21T09:37:52.0887538Z         },
2026-06-21T09:37:52.0887624Z         "unit": {
2026-06-21T09:37:52.0887711Z           "complete": true,
2026-06-21T09:37:52.0887805Z           "evidence": [
2026-06-21T09:37:52.0887881Z             {
2026-06-21T09:37:52.0888002Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.0888087Z               "line": 982
2026-06-21T09:37:52.0888172Z             }
2026-06-21T09:37:52.0888254Z           ]
2026-06-21T09:37:52.0888335Z         }
2026-06-21T09:37:52.0888416Z       }
2026-06-21T09:37:52.0888496Z     },
2026-06-21T09:37:52.0888574Z     {
2026-06-21T09:37:52.0888687Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T09:37:52.0889035Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T09:37:52.0889126Z       "requiredStages": [
2026-06-21T09:37:52.0889208Z         "impl",
2026-06-21T09:37:52.0889289Z         "unit"
2026-06-21T09:37:52.0889374Z       ],
2026-06-21T09:37:52.0889470Z       "stages": {
2026-06-21T09:37:52.0889547Z         "doc": {
2026-06-21T09:37:52.0889651Z           "complete": false,
2026-06-21T09:37:52.0889736Z           "evidence": []
2026-06-21T09:37:52.0889821Z         },
2026-06-21T09:37:52.0889912Z         "impl": {
2026-06-21T09:37:52.0889996Z           "complete": true,
2026-06-21T09:37:52.0890081Z           "evidence": [
2026-06-21T09:37:52.0890163Z             {
2026-06-21T09:37:52.0890287Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.0890367Z               "line": 405
2026-06-21T09:37:52.0890453Z             },
2026-06-21T09:37:52.0890535Z             {
2026-06-21T09:37:52.0890654Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.0890744Z               "line": 409
2026-06-21T09:37:52.0890821Z             },
2026-06-21T09:37:52.0890906Z             {
2026-06-21T09:37:52.0891025Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.0891121Z               "line": 156
2026-06-21T09:37:52.0891202Z             }
2026-06-21T09:37:52.0891293Z           ]
2026-06-21T09:37:52.0891374Z         },
2026-06-21T09:37:52.0891455Z         "int": {
2026-06-21T09:37:52.0891550Z           "complete": false,
2026-06-21T09:37:52.0891640Z           "evidence": []
2026-06-21T09:37:52.0891721Z         },
2026-06-21T09:37:52.0891814Z         "unit": {
2026-06-21T09:37:52.0891917Z           "complete": true,
2026-06-21T09:37:52.0891998Z           "evidence": [
2026-06-21T09:37:52.0892080Z             {
2026-06-21T09:37:52.0892199Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.0892288Z               "line": 865
2026-06-21T09:37:52.0892369Z             },
2026-06-21T09:37:52.0892455Z             {
2026-06-21T09:37:52.0892572Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.0892652Z               "line": 879
2026-06-21T09:37:52.0892743Z             },
2026-06-21T09:37:52.0892830Z             {
2026-06-21T09:37:52.0892948Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.0893039Z               "line": 898
2026-06-21T09:37:52.0893126Z             },
2026-06-21T09:37:52.0893211Z             {
2026-06-21T09:37:52.0893315Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.0893412Z               "line": 915
2026-06-21T09:37:52.0893597Z             },
2026-06-21T09:37:52.0893669Z             {
2026-06-21T09:37:52.0893807Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:37:52.0893897Z               "line": 441
2026-06-21T09:37:52.0893974Z             }
2026-06-21T09:37:52.0894051Z           ]
2026-06-21T09:37:52.0894131Z         }
2026-06-21T09:37:52.0894217Z       }
2026-06-21T09:37:52.0894308Z     },
2026-06-21T09:37:52.0894399Z     {
2026-06-21T09:37:52.0894507Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T09:37:52.0904147Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T09:37:52.0904429Z       "requiredStages": [
2026-06-21T09:37:52.0904514Z         "doc",
2026-06-21T09:37:52.0904597Z         "impl",
2026-06-21T09:37:52.0904682Z         "unit",
2026-06-21T09:37:52.0904768Z         "int"
2026-06-21T09:37:52.0904853Z       ],
2026-06-21T09:37:52.0904936Z       "stages": {
2026-06-21T09:37:52.0905120Z         "doc": {
2026-06-21T09:37:52.0905212Z           "complete": true,
2026-06-21T09:37:52.0905302Z           "evidence": [
2026-06-21T09:37:52.0905382Z             {
2026-06-21T09:37:52.0905483Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.0905579Z               "line": 420
2026-06-21T09:37:52.0905659Z             },
2026-06-21T09:37:52.0905744Z             {
2026-06-21T09:37:52.0905853Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0905955Z               "line": 402
2026-06-21T09:37:52.0906045Z             }
2026-06-21T09:37:52.0906135Z           ]
2026-06-21T09:37:52.0906221Z         },
2026-06-21T09:37:52.0906307Z         "impl": {
2026-06-21T09:37:52.0906483Z           "complete": true,
2026-06-21T09:37:52.0906579Z           "evidence": [
2026-06-21T09:37:52.0906660Z             {
2026-06-21T09:37:52.0906784Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0906884Z               "line": 797
2026-06-21T09:37:52.0906974Z             },
2026-06-21T09:37:52.0907069Z             {
2026-06-21T09:37:52.0907190Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0907275Z               "line": 822
2026-06-21T09:37:52.0907360Z             },
2026-06-21T09:37:52.0907447Z             {
2026-06-21T09:37:52.0907557Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0907656Z               "line": 839
2026-06-21T09:37:52.0907742Z             },
2026-06-21T09:37:52.0907829Z             {
2026-06-21T09:37:52.0907942Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0908027Z               "line": 854
2026-06-21T09:37:52.0908122Z             },
2026-06-21T09:37:52.0908212Z             {
2026-06-21T09:37:52.0908325Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0908406Z               "line": 874
2026-06-21T09:37:52.0908488Z             },
2026-06-21T09:37:52.0908573Z             {
2026-06-21T09:37:52.0908697Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0908783Z               "line": 964
2026-06-21T09:37:52.0908869Z             },
2026-06-21T09:37:52.0909040Z             {
2026-06-21T09:37:52.0909141Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0909236Z               "line": 1016
2026-06-21T09:37:52.0909321Z             },
2026-06-21T09:37:52.0909403Z             {
2026-06-21T09:37:52.0909517Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0909598Z               "line": 1075
2026-06-21T09:37:52.0909679Z             },
2026-06-21T09:37:52.0909766Z             {
2026-06-21T09:37:52.0909889Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.0909984Z               "line": 527
2026-06-21T09:37:52.0910066Z             }
2026-06-21T09:37:52.0910146Z           ]
2026-06-21T09:37:52.0910232Z         },
2026-06-21T09:37:52.0910324Z         "int": {
2026-06-21T09:37:52.0910410Z           "complete": true,
2026-06-21T09:37:52.0910503Z           "evidence": [
2026-06-21T09:37:52.0910590Z             {
2026-06-21T09:37:52.0910710Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:37:52.0910809Z               "line": 35
2026-06-21T09:37:52.0910894Z             },
2026-06-21T09:37:52.0910980Z             {
2026-06-21T09:37:52.0911093Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:37:52.0911182Z               "line": 569
2026-06-21T09:37:52.0911268Z             },
2026-06-21T09:37:52.0911355Z             {
2026-06-21T09:37:52.0911478Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:37:52.0911559Z               "line": 590
2026-06-21T09:37:52.0911646Z             }
2026-06-21T09:37:52.0911726Z           ]
2026-06-21T09:37:52.0911816Z         },
2026-06-21T09:37:52.0911907Z         "unit": {
2026-06-21T09:37:52.0911994Z           "complete": true,
2026-06-21T09:37:52.0912080Z           "evidence": [
2026-06-21T09:37:52.0912164Z             {
2026-06-21T09:37:52.0912280Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0912503Z               "line": 1202
2026-06-21T09:37:52.0912585Z             },
2026-06-21T09:37:52.0912666Z             {
2026-06-21T09:37:52.0912784Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0912886Z               "line": 1246
2026-06-21T09:37:52.0912972Z             },
2026-06-21T09:37:52.0913056Z             {
2026-06-21T09:37:52.0913171Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0913268Z               "line": 1260
2026-06-21T09:37:52.0913352Z             },
2026-06-21T09:37:52.0913428Z             {
2026-06-21T09:37:52.0913546Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0913740Z               "line": 1278
2026-06-21T09:37:52.0913835Z             },
2026-06-21T09:37:52.0913921Z             {
2026-06-21T09:37:52.0914040Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0914125Z               "line": 1302
2026-06-21T09:37:52.0914222Z             },
2026-06-21T09:37:52.0914303Z             {
2026-06-21T09:37:52.0914421Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0914503Z               "line": 1529
2026-06-21T09:37:52.0914589Z             }
2026-06-21T09:37:52.0914665Z           ]
2026-06-21T09:37:52.0914750Z         }
2026-06-21T09:37:52.0914833Z       }
2026-06-21T09:37:52.0914927Z     },
2026-06-21T09:37:52.0915003Z     {
2026-06-21T09:37:52.0915113Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T09:37:52.0917234Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T09:37:52.0917349Z       "requiredStages": [
2026-06-21T09:37:52.0917430Z         "unit",
2026-06-21T09:37:52.0917515Z         "int"
2026-06-21T09:37:52.0917606Z       ],
2026-06-21T09:37:52.0917692Z       "stages": {
2026-06-21T09:37:52.0917773Z         "doc": {
2026-06-21T09:37:52.0917858Z           "complete": true,
2026-06-21T09:37:52.0917944Z           "evidence": [
2026-06-21T09:37:52.0918041Z             {
2026-06-21T09:37:52.0918145Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0918235Z               "line": 381
2026-06-21T09:37:52.0918322Z             }
2026-06-21T09:37:52.0918398Z           ]
2026-06-21T09:37:52.0918483Z         },
2026-06-21T09:37:52.0918568Z         "impl": {
2026-06-21T09:37:52.0918683Z           "complete": true,
2026-06-21T09:37:52.0918767Z           "evidence": [
2026-06-21T09:37:52.0918852Z             {
2026-06-21T09:37:52.0919048Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0919143Z               "line": 143
2026-06-21T09:37:52.0919233Z             }
2026-06-21T09:37:52.0919305Z           ]
2026-06-21T09:37:52.0919396Z         },
2026-06-21T09:37:52.0919477Z         "int": {
2026-06-21T09:37:52.0919576Z           "complete": true,
2026-06-21T09:37:52.0919668Z           "evidence": [
2026-06-21T09:37:52.0919748Z             {
2026-06-21T09:37:52.0919867Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.0919968Z               "line": 1042
2026-06-21T09:37:52.0920054Z             }
2026-06-21T09:37:52.0920139Z           ]
2026-06-21T09:37:52.0920225Z         },
2026-06-21T09:37:52.0920302Z         "unit": {
2026-06-21T09:37:52.0920387Z           "complete": true,
2026-06-21T09:37:52.0920482Z           "evidence": [
2026-06-21T09:37:52.0920664Z             {
2026-06-21T09:37:52.0920783Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0920874Z               "line": 2410
2026-06-21T09:37:52.0920955Z             }
2026-06-21T09:37:52.0921045Z           ]
2026-06-21T09:37:52.0921126Z         }
2026-06-21T09:37:52.0921213Z       }
2026-06-21T09:37:52.0921294Z     },
2026-06-21T09:37:52.0921383Z     {
2026-06-21T09:37:52.0921559Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-21T09:37:52.0926775Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-21T09:37:52.0927022Z       "requiredStages": [
2026-06-21T09:37:52.0927108Z         "impl",
2026-06-21T09:37:52.0927193Z         "unit"
2026-06-21T09:37:52.0927284Z       ],
2026-06-21T09:37:52.0927365Z       "stages": {
2026-06-21T09:37:52.0927451Z         "doc": {
2026-06-21T09:37:52.0927541Z           "complete": false,
2026-06-21T09:37:52.0927638Z           "evidence": []
2026-06-21T09:37:52.0927728Z         },
2026-06-21T09:37:52.0927817Z         "impl": {
2026-06-21T09:37:52.0927899Z           "complete": true,
2026-06-21T09:37:52.0927986Z           "evidence": [
2026-06-21T09:37:52.0928066Z             {
2026-06-21T09:37:52.0928180Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0928282Z               "line": 358
2026-06-21T09:37:52.0928357Z             },
2026-06-21T09:37:52.0928438Z             {
2026-06-21T09:37:52.0928558Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0928643Z               "line": 778
2026-06-21T09:37:52.0928728Z             }
2026-06-21T09:37:52.0928814Z           ]
2026-06-21T09:37:52.0931549Z         },
2026-06-21T09:37:52.0931672Z         "int": {
2026-06-21T09:37:52.0931783Z           "complete": false,
2026-06-21T09:37:52.0931887Z           "evidence": []
2026-06-21T09:37:52.0931967Z         },
2026-06-21T09:37:52.0932076Z         "unit": {
2026-06-21T09:37:52.0932190Z           "complete": true,
2026-06-21T09:37:52.0932284Z           "evidence": [
2026-06-21T09:37:52.0932364Z             {
2026-06-21T09:37:52.0932495Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0932594Z               "line": 2470
2026-06-21T09:37:52.0932679Z             },
2026-06-21T09:37:52.0932899Z             {
2026-06-21T09:37:52.0933027Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.0933124Z               "line": 2531
2026-06-21T09:37:52.0933210Z             }
2026-06-21T09:37:52.0933289Z           ]
2026-06-21T09:37:52.0933371Z         }
2026-06-21T09:37:52.0933453Z       }
2026-06-21T09:37:52.0933538Z     },
2026-06-21T09:37:52.0933623Z     {
2026-06-21T09:37:52.0933734Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T09:37:52.0934562Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T09:37:52.0934771Z       "requiredStages": [
2026-06-21T09:37:52.0934855Z         "doc",
2026-06-21T09:37:52.0934940Z         "impl",
2026-06-21T09:37:52.0935022Z         "unit"
2026-06-21T09:37:52.0935105Z       ],
2026-06-21T09:37:52.0935188Z       "stages": {
2026-06-21T09:37:52.0935279Z         "doc": {
2026-06-21T09:37:52.0935380Z           "complete": true,
2026-06-21T09:37:52.0935471Z           "evidence": [
2026-06-21T09:37:52.0935556Z             {
2026-06-21T09:37:52.0935662Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0935747Z               "line": 366
2026-06-21T09:37:52.0935837Z             }
2026-06-21T09:37:52.0935924Z           ]
2026-06-21T09:37:52.0936005Z         },
2026-06-21T09:37:52.0936095Z         "impl": {
2026-06-21T09:37:52.0936190Z           "complete": true,
2026-06-21T09:37:52.0936282Z           "evidence": [
2026-06-21T09:37:52.0936367Z             {
2026-06-21T09:37:52.0936495Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:37:52.0936587Z               "line": 87
2026-06-21T09:37:52.0936668Z             },
2026-06-21T09:37:52.0936758Z             {
2026-06-21T09:37:52.0936873Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.0936960Z               "line": 105
2026-06-21T09:37:52.0937048Z             },
2026-06-21T09:37:52.0937130Z             {
2026-06-21T09:37:52.0937260Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.0937340Z               "line": 55
2026-06-21T09:37:52.0937429Z             },
2026-06-21T09:37:52.0937510Z             {
2026-06-21T09:37:52.0937630Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.0937710Z               "line": 31
2026-06-21T09:37:52.0937791Z             },
2026-06-21T09:37:52.0937873Z             {
2026-06-21T09:37:52.0937988Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.0938077Z               "line": 446
2026-06-21T09:37:52.0938159Z             },
2026-06-21T09:37:52.0938245Z             {
2026-06-21T09:37:52.0938373Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.0938469Z               "line": 95
2026-06-21T09:37:52.0938560Z             },
2026-06-21T09:37:52.0938645Z             {
2026-06-21T09:37:52.0938769Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.0938851Z               "line": 29
2026-06-21T09:37:52.0938936Z             },
2026-06-21T09:37:52.0939103Z             {
2026-06-21T09:37:52.0939218Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.0939307Z               "line": 104
2026-06-21T09:37:52.0939384Z             },
2026-06-21T09:37:52.0939471Z             {
2026-06-21T09:37:52.0939603Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.0939693Z               "line": 208
2026-06-21T09:37:52.0939774Z             },
2026-06-21T09:37:52.0939859Z             {
2026-06-21T09:37:52.0939987Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:37:52.0940077Z               "line": 28
2026-06-21T09:37:52.0940173Z             },
2026-06-21T09:37:52.0940253Z             {
2026-06-21T09:37:52.0940382Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:37:52.0940577Z               "line": 74
2026-06-21T09:37:52.0940663Z             },
2026-06-21T09:37:52.0940755Z             {
2026-06-21T09:37:52.0940892Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:37:52.0940978Z               "line": 32
2026-06-21T09:37:52.0941055Z             },
2026-06-21T09:37:52.0941150Z             {
2026-06-21T09:37:52.0941259Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.0941350Z               "line": 40
2026-06-21T09:37:52.0941432Z             },
2026-06-21T09:37:52.0941517Z             {
2026-06-21T09:37:52.0941631Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.0941827Z               "line": 184
2026-06-21T09:37:52.0941913Z             },
2026-06-21T09:37:52.0941999Z             {
2026-06-21T09:37:52.0942113Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.0942203Z               "line": 61
2026-06-21T09:37:52.0942295Z             },
2026-06-21T09:37:52.0942381Z             {
2026-06-21T09:37:52.0942489Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.0942583Z               "line": 131
2026-06-21T09:37:52.0942670Z             },
2026-06-21T09:37:52.0942755Z             {
2026-06-21T09:37:52.0942858Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:37:52.0942944Z               "line": 223
2026-06-21T09:37:52.0943030Z             },
2026-06-21T09:37:52.0943116Z             {
2026-06-21T09:37:52.0943239Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:37:52.0943326Z               "line": 37
2026-06-21T09:37:52.0943412Z             },
2026-06-21T09:37:52.0943492Z             {
2026-06-21T09:37:52.0943617Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.0943760Z               "line": 38
2026-06-21T09:37:52.0943840Z             },
2026-06-21T09:37:52.0943917Z             {
2026-06-21T09:37:52.0944041Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:37:52.0944127Z               "line": 36
2026-06-21T09:37:52.0944217Z             },
2026-06-21T09:37:52.0944299Z             {
2026-06-21T09:37:52.0944408Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:37:52.0944493Z               "line": 40
2026-06-21T09:37:52.0944576Z             }
2026-06-21T09:37:52.0944657Z           ]
2026-06-21T09:37:52.0944741Z         },
2026-06-21T09:37:52.0944832Z         "int": {
2026-06-21T09:37:52.0944915Z           "complete": false,
2026-06-21T09:37:52.0945009Z           "evidence": []
2026-06-21T09:37:52.0945093Z         },
2026-06-21T09:37:52.0945179Z         "unit": {
2026-06-21T09:37:52.0945279Z           "complete": true,
2026-06-21T09:37:52.0945378Z           "evidence": [
2026-06-21T09:37:52.0945467Z             {
2026-06-21T09:37:52.0945592Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.0945716Z               "line": 212
2026-06-21T09:37:52.0945801Z             },
2026-06-21T09:37:52.0945883Z             {
2026-06-21T09:37:52.0946031Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T09:37:52.0946121Z               "line": 136
2026-06-21T09:37:52.0946208Z             },
2026-06-21T09:37:52.0946293Z             {
2026-06-21T09:37:52.0946421Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:37:52.0946513Z               "line": 685
2026-06-21T09:37:52.0946603Z             },
2026-06-21T09:37:52.0946689Z             {
2026-06-21T09:37:52.0946808Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:37:52.0946904Z               "line": 224
2026-06-21T09:37:52.0946980Z             },
2026-06-21T09:37:52.0947070Z             {
2026-06-21T09:37:52.0947200Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:37:52.0947293Z               "line": 206
2026-06-21T09:37:52.0947385Z             },
2026-06-21T09:37:52.0947472Z             {
2026-06-21T09:37:52.0947599Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:37:52.0947709Z               "line": 112
2026-06-21T09:37:52.0947872Z             },
2026-06-21T09:37:52.0947951Z             {
2026-06-21T09:37:52.0948070Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:37:52.0948162Z               "line": 157
2026-06-21T09:37:52.0948248Z             },
2026-06-21T09:37:52.0948327Z             {
2026-06-21T09:37:52.0948442Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.0948538Z               "line": 215
2026-06-21T09:37:52.0948623Z             },
2026-06-21T09:37:52.0948699Z             {
2026-06-21T09:37:52.0948815Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:37:52.0948910Z               "line": 141
2026-06-21T09:37:52.0949220Z             },
2026-06-21T09:37:52.0949300Z             {
2026-06-21T09:37:52.0949463Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:37:52.0949549Z               "line": 162
2026-06-21T09:37:52.0949629Z             }
2026-06-21T09:37:52.0949716Z           ]
2026-06-21T09:37:52.0949802Z         }
2026-06-21T09:37:52.0949887Z       }
2026-06-21T09:37:52.0949968Z     },
2026-06-21T09:37:52.0950060Z     {
2026-06-21T09:37:52.0950187Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T09:37:52.0952020Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T09:37:52.0952129Z       "requiredStages": [
2026-06-21T09:37:52.0952210Z         "doc",
2026-06-21T09:37:52.0952298Z         "impl",
2026-06-21T09:37:52.0952382Z         "unit",
2026-06-21T09:37:52.0952463Z         "int"
2026-06-21T09:37:52.0952550Z       ],
2026-06-21T09:37:52.0952636Z       "stages": {
2026-06-21T09:37:52.0952720Z         "doc": {
2026-06-21T09:37:52.0952816Z           "complete": true,
2026-06-21T09:37:52.0952893Z           "evidence": [
2026-06-21T09:37:52.0952979Z             {
2026-06-21T09:37:52.0953092Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.0953177Z               "line": 250
2026-06-21T09:37:52.0953259Z             }
2026-06-21T09:37:52.0953343Z           ]
2026-06-21T09:37:52.0953428Z         },
2026-06-21T09:37:52.0953514Z         "impl": {
2026-06-21T09:37:52.0953619Z           "complete": true,
2026-06-21T09:37:52.0953709Z           "evidence": [
2026-06-21T09:37:52.0953799Z             {
2026-06-21T09:37:52.0953910Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:37:52.0954001Z               "line": 135
2026-06-21T09:37:52.0954086Z             },
2026-06-21T09:37:52.0954167Z             {
2026-06-21T09:37:52.0954277Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:37:52.0954362Z               "line": 157
2026-06-21T09:37:52.0954453Z             }
2026-06-21T09:37:52.0954526Z           ]
2026-06-21T09:37:52.0954615Z         },
2026-06-21T09:37:52.0954696Z         "int": {
2026-06-21T09:37:52.0954777Z           "complete": true,
2026-06-21T09:37:52.0954864Z           "evidence": [
2026-06-21T09:37:52.0954939Z             {
2026-06-21T09:37:52.0955068Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T09:37:52.0955160Z               "line": 15
2026-06-21T09:37:52.0955236Z             }
2026-06-21T09:37:52.0955325Z           ]
2026-06-21T09:37:52.0955407Z         },
2026-06-21T09:37:52.0955494Z         "unit": {
2026-06-21T09:37:52.0955579Z           "complete": true,
2026-06-21T09:37:52.0955672Z           "evidence": [
2026-06-21T09:37:52.0955758Z             {
2026-06-21T09:37:52.0955877Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T09:37:52.0956066Z               "line": 233
2026-06-21T09:37:52.0956152Z             }
2026-06-21T09:37:52.0956243Z           ]
2026-06-21T09:37:52.0956328Z         }
2026-06-21T09:37:52.0956419Z       }
2026-06-21T09:37:52.0956501Z     },
2026-06-21T09:37:52.0956591Z     {
2026-06-21T09:37:52.0956700Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T09:37:52.0956853Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T09:37:52.0956953Z       "requiredStages": [
2026-06-21T09:37:52.0957034Z         "impl",
2026-06-21T09:37:52.0957121Z         "unit"
2026-06-21T09:37:52.0957205Z       ],
2026-06-21T09:37:52.0957383Z       "stages": {
2026-06-21T09:37:52.0957468Z         "doc": {
2026-06-21T09:37:52.0957564Z           "complete": false,
2026-06-21T09:37:52.0957659Z           "evidence": []
2026-06-21T09:37:52.0957731Z         },
2026-06-21T09:37:52.0957816Z         "impl": {
2026-06-21T09:37:52.0957907Z           "complete": true,
2026-06-21T09:37:52.0958008Z           "evidence": [
2026-06-21T09:37:52.0958094Z             {
2026-06-21T09:37:52.0958207Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.0958299Z               "line": 95
2026-06-21T09:37:52.0958385Z             },
2026-06-21T09:37:52.0958474Z             {
2026-06-21T09:37:52.0958582Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0958674Z               "line": 117
2026-06-21T09:37:52.0958765Z             }
2026-06-21T09:37:52.0958850Z           ]
2026-06-21T09:37:52.0959032Z         },
2026-06-21T09:37:52.0959103Z         "int": {
2026-06-21T09:37:52.0959202Z           "complete": false,
2026-06-21T09:37:52.0959304Z           "evidence": []
2026-06-21T09:37:52.0959385Z         },
2026-06-21T09:37:52.0959461Z         "unit": {
2026-06-21T09:37:52.0959545Z           "complete": true,
2026-06-21T09:37:52.0959642Z           "evidence": [
2026-06-21T09:37:52.0959714Z             {
2026-06-21T09:37:52.0959822Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.0959913Z               "line": 250
2026-06-21T09:37:52.0960000Z             },
2026-06-21T09:37:52.0960089Z             {
2026-06-21T09:37:52.0960199Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.0960286Z               "line": 412
2026-06-21T09:37:52.0960371Z             },
2026-06-21T09:37:52.0960457Z             {
2026-06-21T09:37:52.0960562Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0960658Z               "line": 611
2026-06-21T09:37:52.0960742Z             },
2026-06-21T09:37:52.0960823Z             {
2026-06-21T09:37:52.0960923Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.0961008Z               "line": 669
2026-06-21T09:37:52.0961087Z             }
2026-06-21T09:37:52.0961173Z           ]
2026-06-21T09:37:52.0961259Z         }
2026-06-21T09:37:52.0961346Z       }
2026-06-21T09:37:52.0961426Z     },
2026-06-21T09:37:52.0961512Z     {
2026-06-21T09:37:52.0961632Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T09:37:52.0964035Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T09:37:52.0964136Z       "requiredStages": [
2026-06-21T09:37:52.0964227Z         "impl",
2026-06-21T09:37:52.0964442Z         "unit",
2026-06-21T09:37:52.0964532Z         "int"
2026-06-21T09:37:52.0964612Z       ],
2026-06-21T09:37:52.0964698Z       "stages": {
2026-06-21T09:37:52.0964781Z         "doc": {
2026-06-21T09:37:52.0964880Z           "complete": false,
2026-06-21T09:37:52.0964965Z           "evidence": []
2026-06-21T09:37:52.0965052Z         },
2026-06-21T09:37:52.0965138Z         "impl": {
2026-06-21T09:37:52.0965223Z           "complete": true,
2026-06-21T09:37:52.0965309Z           "evidence": [
2026-06-21T09:37:52.0965396Z             {
2026-06-21T09:37:52.0965509Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0965796Z               "line": 925
2026-06-21T09:37:52.0965885Z             },
2026-06-21T09:37:52.0965967Z             {
2026-06-21T09:37:52.0966092Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0966181Z               "line": 994
2026-06-21T09:37:52.0966266Z             }
2026-06-21T09:37:52.0966352Z           ]
2026-06-21T09:37:52.0966446Z         },
2026-06-21T09:37:52.0966531Z         "int": {
2026-06-21T09:37:52.0966616Z           "complete": true,
2026-06-21T09:37:52.0966703Z           "evidence": [
2026-06-21T09:37:52.0966785Z             {
2026-06-21T09:37:52.0966912Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:37:52.0967004Z               "line": 187
2026-06-21T09:37:52.0967089Z             },
2026-06-21T09:37:52.0967179Z             {
2026-06-21T09:37:52.0967299Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T09:37:52.0967385Z               "line": 348
2026-06-21T09:37:52.0967475Z             }
2026-06-21T09:37:52.0967570Z           ]
2026-06-21T09:37:52.0967648Z         },
2026-06-21T09:37:52.0967733Z         "unit": {
2026-06-21T09:37:52.0967828Z           "complete": true,
2026-06-21T09:37:52.0967919Z           "evidence": [
2026-06-21T09:37:52.0968000Z             {
2026-06-21T09:37:52.0968119Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.0968224Z               "line": 1206
2026-06-21T09:37:52.0968301Z             },
2026-06-21T09:37:52.0968386Z             {
2026-06-21T09:37:52.0968500Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0968587Z               "line": 8116
2026-06-21T09:37:52.0968668Z             }
2026-06-21T09:37:52.0968753Z           ]
2026-06-21T09:37:52.0968824Z         }
2026-06-21T09:37:52.0968912Z       }
2026-06-21T09:37:52.0969086Z     },
2026-06-21T09:37:52.0969166Z     {
2026-06-21T09:37:52.0969267Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T09:37:52.0969452Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T09:37:52.0969558Z       "requiredStages": [
2026-06-21T09:37:52.0969639Z         "impl",
2026-06-21T09:37:52.0969720Z         "unit"
2026-06-21T09:37:52.0969810Z       ],
2026-06-21T09:37:52.0969902Z       "stages": {
2026-06-21T09:37:52.0969982Z         "doc": {
2026-06-21T09:37:52.0970077Z           "complete": false,
2026-06-21T09:37:52.0970168Z           "evidence": []
2026-06-21T09:37:52.0970245Z         },
2026-06-21T09:37:52.0970330Z         "impl": {
2026-06-21T09:37:52.0970425Z           "complete": true,
2026-06-21T09:37:52.0970513Z           "evidence": [
2026-06-21T09:37:52.0970593Z             {
2026-06-21T09:37:52.0970721Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0970818Z               "line": 262
2026-06-21T09:37:52.0970903Z             },
2026-06-21T09:37:52.0970983Z             {
2026-06-21T09:37:52.0971089Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0971190Z               "line": 307
2026-06-21T09:37:52.0971269Z             },
2026-06-21T09:37:52.0971359Z             {
2026-06-21T09:37:52.0971478Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0971568Z               "line": 319
2026-06-21T09:37:52.0971652Z             }
2026-06-21T09:37:52.0971738Z           ]
2026-06-21T09:37:52.0971829Z         },
2026-06-21T09:37:52.0972024Z         "int": {
2026-06-21T09:37:52.0972115Z           "complete": false,
2026-06-21T09:37:52.0972210Z           "evidence": []
2026-06-21T09:37:52.0972296Z         },
2026-06-21T09:37:52.0972382Z         "unit": {
2026-06-21T09:37:52.0972464Z           "complete": true,
2026-06-21T09:37:52.0972559Z           "evidence": [
2026-06-21T09:37:52.0972639Z             {
2026-06-21T09:37:52.0972745Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0972845Z               "line": 455
2026-06-21T09:37:52.0972930Z             },
2026-06-21T09:37:52.0973011Z             {
2026-06-21T09:37:52.0973122Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.0973326Z               "line": 499
2026-06-21T09:37:52.0973413Z             }
2026-06-21T09:37:52.0973498Z           ]
2026-06-21T09:37:52.0973583Z         }
2026-06-21T09:37:52.0973665Z       }
2026-06-21T09:37:52.0973756Z     },
2026-06-21T09:37:52.0973841Z     {
2026-06-21T09:37:52.0973946Z       "id": "REQ-HOST-RUN-1",
2026-06-21T09:37:52.0976323Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T09:37:52.0976436Z       "requiredStages": [
2026-06-21T09:37:52.0976513Z         "impl",
2026-06-21T09:37:52.0976600Z         "unit",
2026-06-21T09:37:52.0976685Z         "int"
2026-06-21T09:37:52.0976765Z       ],
2026-06-21T09:37:52.0976859Z       "stages": {
2026-06-21T09:37:52.0976946Z         "doc": {
2026-06-21T09:37:52.0977039Z           "complete": false,
2026-06-21T09:37:52.0977124Z           "evidence": []
2026-06-21T09:37:52.0977215Z         },
2026-06-21T09:37:52.0977297Z         "impl": {
2026-06-21T09:37:52.0977391Z           "complete": true,
2026-06-21T09:37:52.0977476Z           "evidence": [
2026-06-21T09:37:52.0977569Z             {
2026-06-21T09:37:52.0977697Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0977782Z               "line": 30
2026-06-21T09:37:52.0977869Z             },
2026-06-21T09:37:52.0977945Z             {
2026-06-21T09:37:52.0978083Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0978179Z               "line": 76
2026-06-21T09:37:52.0978264Z             },
2026-06-21T09:37:52.0978355Z             {
2026-06-21T09:37:52.0978474Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0978570Z               "line": 181
2026-06-21T09:37:52.0978651Z             },
2026-06-21T09:37:52.0978736Z             {
2026-06-21T09:37:52.0978847Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.0978931Z               "line": 1266
2026-06-21T09:37:52.0979099Z             }
2026-06-21T09:37:52.0979186Z           ]
2026-06-21T09:37:52.0979265Z         },
2026-06-21T09:37:52.0979351Z         "int": {
2026-06-21T09:37:52.0979448Z           "complete": true,
2026-06-21T09:37:52.0979543Z           "evidence": [
2026-06-21T09:37:52.0979622Z             {
2026-06-21T09:37:52.0979751Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.0979852Z               "line": 285
2026-06-21T09:37:52.0979942Z             }
2026-06-21T09:37:52.0980022Z           ]
2026-06-21T09:37:52.0980104Z         },
2026-06-21T09:37:52.0980181Z         "unit": {
2026-06-21T09:37:52.0980280Z           "complete": true,
2026-06-21T09:37:52.0980375Z           "evidence": [
2026-06-21T09:37:52.0980557Z             {
2026-06-21T09:37:52.0980690Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0980777Z               "line": 229
2026-06-21T09:37:52.0980862Z             },
2026-06-21T09:37:52.0980952Z             {
2026-06-21T09:37:52.0981068Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0981153Z               "line": 296
2026-06-21T09:37:52.0981239Z             },
2026-06-21T09:37:52.0981324Z             {
2026-06-21T09:37:52.0981440Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0981534Z               "line": 419
2026-06-21T09:37:52.0981624Z             }
2026-06-21T09:37:52.0981811Z           ]
2026-06-21T09:37:52.0981895Z         }
2026-06-21T09:37:52.0981981Z       }
2026-06-21T09:37:52.0982067Z     },
2026-06-21T09:37:52.0982156Z     {
2026-06-21T09:37:52.0982255Z       "id": "REQ-HOST-RUN-2",
2026-06-21T09:37:52.0983905Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T09:37:52.0984011Z       "requiredStages": [
2026-06-21T09:37:52.0984110Z         "impl",
2026-06-21T09:37:52.0984196Z         "unit",
2026-06-21T09:37:52.0984283Z         "int"
2026-06-21T09:37:52.0984368Z       ],
2026-06-21T09:37:52.0984449Z       "stages": {
2026-06-21T09:37:52.0984540Z         "doc": {
2026-06-21T09:37:52.0984636Z           "complete": false,
2026-06-21T09:37:52.0984725Z           "evidence": []
2026-06-21T09:37:52.0984824Z         },
2026-06-21T09:37:52.0984915Z         "impl": {
2026-06-21T09:37:52.0985014Z           "complete": true,
2026-06-21T09:37:52.0985094Z           "evidence": [
2026-06-21T09:37:52.0985179Z             {
2026-06-21T09:37:52.0985300Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.0985390Z               "line": 182
2026-06-21T09:37:52.0985470Z             },
2026-06-21T09:37:52.0985557Z             {
2026-06-21T09:37:52.0985672Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:37:52.0985761Z               "line": 113
2026-06-21T09:37:52.0985843Z             }
2026-06-21T09:37:52.0985943Z           ]
2026-06-21T09:37:52.0986034Z         },
2026-06-21T09:37:52.0986119Z         "int": {
2026-06-21T09:37:52.0986206Z           "complete": true,
2026-06-21T09:37:52.0986291Z           "evidence": [
2026-06-21T09:37:52.0986376Z             {
2026-06-21T09:37:52.0986502Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.0986601Z               "line": 572
2026-06-21T09:37:52.0986691Z             }
2026-06-21T09:37:52.0986787Z           ]
2026-06-21T09:37:52.0986869Z         },
2026-06-21T09:37:52.0986958Z         "unit": {
2026-06-21T09:37:52.0987049Z           "complete": true,
2026-06-21T09:37:52.0987136Z           "evidence": [
2026-06-21T09:37:52.0987217Z             {
2026-06-21T09:37:52.0987339Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T09:37:52.0987439Z               "line": 86
2026-06-21T09:37:52.0987515Z             }
2026-06-21T09:37:52.0987599Z           ]
2026-06-21T09:37:52.0987680Z         }
2026-06-21T09:37:52.0987775Z       }
2026-06-21T09:37:52.0987862Z     },
2026-06-21T09:37:52.0987947Z     {
2026-06-21T09:37:52.0988046Z       "id": "REQ-INFRA-1",
2026-06-21T09:37:52.0988224Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T09:37:52.0988318Z       "requiredStages": [],
2026-06-21T09:37:52.0988400Z       "stages": {
2026-06-21T09:37:52.0988572Z         "doc": {
2026-06-21T09:37:52.0988667Z           "complete": false,
2026-06-21T09:37:52.0988763Z           "evidence": []
2026-06-21T09:37:52.0988848Z         },
2026-06-21T09:37:52.0988934Z         "impl": {
2026-06-21T09:37:52.0989116Z           "complete": false,
2026-06-21T09:37:52.0989201Z           "evidence": []
2026-06-21T09:37:52.0989291Z         },
2026-06-21T09:37:52.0989373Z         "int": {
2026-06-21T09:37:52.0989473Z           "complete": false,
2026-06-21T09:37:52.0989563Z           "evidence": []
2026-06-21T09:37:52.0989644Z         },
2026-06-21T09:37:52.0989732Z         "unit": {
2026-06-21T09:37:52.0989926Z           "complete": false,
2026-06-21T09:37:52.0990022Z           "evidence": []
2026-06-21T09:37:52.0990103Z         }
2026-06-21T09:37:52.0990192Z       }
2026-06-21T09:37:52.0990272Z     },
2026-06-21T09:37:52.0990354Z     {
2026-06-21T09:37:52.0990455Z       "id": "REQ-INST-1",
2026-06-21T09:37:52.0990606Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T09:37:52.0990717Z       "requiredStages": [],
2026-06-21T09:37:52.0990803Z       "stages": {
2026-06-21T09:37:52.0990902Z         "doc": {
2026-06-21T09:37:52.0990999Z           "complete": false,
2026-06-21T09:37:52.0991084Z           "evidence": []
2026-06-21T09:37:52.0991174Z         },
2026-06-21T09:37:52.0991260Z         "impl": {
2026-06-21T09:37:52.0991351Z           "complete": false,
2026-06-21T09:37:52.0991432Z           "evidence": []
2026-06-21T09:37:52.0991512Z         },
2026-06-21T09:37:52.0991599Z         "int": {
2026-06-21T09:37:52.0991685Z           "complete": false,
2026-06-21T09:37:52.0991779Z           "evidence": []
2026-06-21T09:37:52.0991861Z         },
2026-06-21T09:37:52.0991948Z         "unit": {
2026-06-21T09:37:52.0992033Z           "complete": false,
2026-06-21T09:37:52.0992132Z           "evidence": []
2026-06-21T09:37:52.0992218Z         }
2026-06-21T09:37:52.0992301Z       }
2026-06-21T09:37:52.0992394Z     },
2026-06-21T09:37:52.0992484Z     {
2026-06-21T09:37:52.0992579Z       "id": "REQ-INST-10",
2026-06-21T09:37:52.0992787Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T09:37:52.0992882Z       "requiredStages": [
2026-06-21T09:37:52.0992969Z         "impl",
2026-06-21T09:37:52.0993054Z         "unit"
2026-06-21T09:37:52.0993130Z       ],
2026-06-21T09:37:52.0993216Z       "stages": {
2026-06-21T09:37:52.0993308Z         "doc": {
2026-06-21T09:37:52.0993393Z           "complete": false,
2026-06-21T09:37:52.0993492Z           "evidence": []
2026-06-21T09:37:52.0993574Z         },
2026-06-21T09:37:52.0993655Z         "impl": {
2026-06-21T09:37:52.0993764Z           "complete": true,
2026-06-21T09:37:52.0993856Z           "evidence": [
2026-06-21T09:37:52.0993937Z             {
2026-06-21T09:37:52.0994060Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0994146Z               "line": 648
2026-06-21T09:37:52.0994237Z             },
2026-06-21T09:37:52.0994322Z             {
2026-06-21T09:37:52.0994446Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0994533Z               "line": 725
2026-06-21T09:37:52.0994613Z             },
2026-06-21T09:37:52.0994700Z             {
2026-06-21T09:37:52.0994829Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:37:52.0994919Z               "line": 13
2026-06-21T09:37:52.0994999Z             },
2026-06-21T09:37:52.0995086Z             {
2026-06-21T09:37:52.0995201Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:37:52.0995295Z               "line": 67
2026-06-21T09:37:52.0995380Z             },
2026-06-21T09:37:52.0995471Z             {
2026-06-21T09:37:52.0995588Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.0995673Z               "line": 18
2026-06-21T09:37:52.0995754Z             },
2026-06-21T09:37:52.0995841Z             {
2026-06-21T09:37:52.0995960Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.0996151Z               "line": 444
2026-06-21T09:37:52.0996237Z             }
2026-06-21T09:37:52.0996326Z           ]
2026-06-21T09:37:52.0996408Z         },
2026-06-21T09:37:52.0996499Z         "int": {
2026-06-21T09:37:52.0996589Z           "complete": false,
2026-06-21T09:37:52.0996679Z           "evidence": []
2026-06-21T09:37:52.0996766Z         },
2026-06-21T09:37:52.0996856Z         "unit": {
2026-06-21T09:37:52.0996946Z           "complete": true,
2026-06-21T09:37:52.0997037Z           "evidence": [
2026-06-21T09:37:52.0997128Z             {
2026-06-21T09:37:52.0997247Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0997415Z               "line": 932
2026-06-21T09:37:52.0997500Z             },
2026-06-21T09:37:52.0997590Z             {
2026-06-21T09:37:52.0997710Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0997801Z               "line": 1309
2026-06-21T09:37:52.0997889Z             },
2026-06-21T09:37:52.0997975Z             {
2026-06-21T09:37:52.0998109Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0998197Z               "line": 1320
2026-06-21T09:37:52.0998287Z             },
2026-06-21T09:37:52.0998378Z             {
2026-06-21T09:37:52.0998493Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0998593Z               "line": 1336
2026-06-21T09:37:52.0998679Z             },
2026-06-21T09:37:52.0998765Z             {
2026-06-21T09:37:52.0998883Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0999033Z               "line": 1352
2026-06-21T09:37:52.0999132Z             },
2026-06-21T09:37:52.0999227Z             {
2026-06-21T09:37:52.0999347Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0999441Z               "line": 1374
2026-06-21T09:37:52.0999527Z             },
2026-06-21T09:37:52.0999609Z             {
2026-06-21T09:37:52.0999737Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.0999837Z               "line": 1679
2026-06-21T09:37:52.0999919Z             },
2026-06-21T09:37:52.1000006Z             {
2026-06-21T09:37:52.1000109Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:37:52.1000205Z               "line": 130
2026-06-21T09:37:52.1000297Z             },
2026-06-21T09:37:52.1000376Z             {
2026-06-21T09:37:52.1000486Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:37:52.1000568Z               "line": 167
2026-06-21T09:37:52.1000668Z             },
2026-06-21T09:37:52.1000742Z             {
2026-06-21T09:37:52.1000856Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:37:52.1000957Z               "line": 175
2026-06-21T09:37:52.1001038Z             },
2026-06-21T09:37:52.1001128Z             {
2026-06-21T09:37:52.1001234Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T09:37:52.1001329Z               "line": 183
2026-06-21T09:37:52.1001409Z             },
2026-06-21T09:37:52.1001490Z             {
2026-06-21T09:37:52.1001606Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1001687Z               "line": 896
2026-06-21T09:37:52.1001772Z             }
2026-06-21T09:37:52.1001858Z           ]
2026-06-21T09:37:52.1001954Z         }
2026-06-21T09:37:52.1002025Z       }
2026-06-21T09:37:52.1002111Z     },
2026-06-21T09:37:52.1002198Z     {
2026-06-21T09:37:52.1002292Z       "id": "REQ-INST-11",
2026-06-21T09:37:52.1002503Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T09:37:52.1002602Z       "requiredStages": [
2026-06-21T09:37:52.1002697Z         "impl",
2026-06-21T09:37:52.1002778Z         "unit"
2026-06-21T09:37:52.1002866Z       ],
2026-06-21T09:37:52.1002964Z       "stages": {
2026-06-21T09:37:52.1003039Z         "doc": {
2026-06-21T09:37:52.1003144Z           "complete": false,
2026-06-21T09:37:52.1005661Z           "evidence": []
2026-06-21T09:37:52.1005775Z         },
2026-06-21T09:37:52.1005855Z         "impl": {
2026-06-21T09:37:52.1006120Z           "complete": true,
2026-06-21T09:37:52.1006214Z           "evidence": [
2026-06-21T09:37:52.1006290Z             {
2026-06-21T09:37:52.1006420Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1006515Z               "line": 514
2026-06-21T09:37:52.1006605Z             },
2026-06-21T09:37:52.1006682Z             {
2026-06-21T09:37:52.1006825Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.1006924Z               "line": 297
2026-06-21T09:37:52.1007007Z             },
2026-06-21T09:37:52.1007088Z             {
2026-06-21T09:37:52.1007206Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:37:52.1007393Z               "line": 59
2026-06-21T09:37:52.1007478Z             },
2026-06-21T09:37:52.1007569Z             {
2026-06-21T09:37:52.1007674Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1007755Z               "line": 5291
2026-06-21T09:37:52.1007845Z             },
2026-06-21T09:37:52.1007932Z             {
2026-06-21T09:37:52.1008041Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1008126Z               "line": 7137
2026-06-21T09:37:52.1008208Z             }
2026-06-21T09:37:52.1008294Z           ]
2026-06-21T09:37:52.1008384Z         },
2026-06-21T09:37:52.1008469Z         "int": {
2026-06-21T09:37:52.1008564Z           "complete": false,
2026-06-21T09:37:52.1008659Z           "evidence": []
2026-06-21T09:37:52.1008743Z         },
2026-06-21T09:37:52.1008828Z         "unit": {
2026-06-21T09:37:52.1008924Z           "complete": true,
2026-06-21T09:37:52.1009095Z           "evidence": [
2026-06-21T09:37:52.1009186Z             {
2026-06-21T09:37:52.1009311Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1009410Z               "line": 1479
2026-06-21T09:37:52.1009487Z             },
2026-06-21T09:37:52.1009573Z             {
2026-06-21T09:37:52.1009692Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1009782Z               "line": 1512
2026-06-21T09:37:52.1009860Z             },
2026-06-21T09:37:52.1009936Z             {
2026-06-21T09:37:52.1010063Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.1010140Z               "line": 527
2026-06-21T09:37:52.1010227Z             },
2026-06-21T09:37:52.1010316Z             {
2026-06-21T09:37:52.1010431Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:37:52.1010522Z               "line": 160
2026-06-21T09:37:52.1010608Z             },
2026-06-21T09:37:52.1010684Z             {
2026-06-21T09:37:52.1010794Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:37:52.1010904Z               "line": 190
2026-06-21T09:37:52.1010988Z             },
2026-06-21T09:37:52.1011070Z             {
2026-06-21T09:37:52.1011190Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T09:37:52.1011270Z               "line": 225
2026-06-21T09:37:52.1011365Z             },
2026-06-21T09:37:52.1011441Z             {
2026-06-21T09:37:52.1011546Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1011636Z               "line": 7994
2026-06-21T09:37:52.1011717Z             }
2026-06-21T09:37:52.1011803Z           ]
2026-06-21T09:37:52.1011889Z         }
2026-06-21T09:37:52.1011974Z       }
2026-06-21T09:37:52.1012055Z     },
2026-06-21T09:37:52.1012148Z     {
2026-06-21T09:37:52.1012247Z       "id": "REQ-INST-12",
2026-06-21T09:37:52.1012538Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T09:37:52.1012642Z       "requiredStages": [
2026-06-21T09:37:52.1012729Z         "impl",
2026-06-21T09:37:52.1012815Z         "unit"
2026-06-21T09:37:52.1012900Z       ],
2026-06-21T09:37:52.1012981Z       "stages": {
2026-06-21T09:37:52.1013073Z         "doc": {
2026-06-21T09:37:52.1013162Z           "complete": false,
2026-06-21T09:37:52.1013257Z           "evidence": []
2026-06-21T09:37:52.1013343Z         },
2026-06-21T09:37:52.1013533Z         "impl": {
2026-06-21T09:37:52.1013618Z           "complete": true,
2026-06-21T09:37:52.1013709Z           "evidence": [
2026-06-21T09:37:52.1013799Z             {
2026-06-21T09:37:52.1013922Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1014022Z               "line": 566
2026-06-21T09:37:52.1014099Z             },
2026-06-21T09:37:52.1014189Z             {
2026-06-21T09:37:52.1014313Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1014404Z               "line": 659
2026-06-21T09:37:52.1014489Z             },
2026-06-21T09:37:52.1014565Z             {
2026-06-21T09:37:52.1014785Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1014870Z               "line": 739
2026-06-21T09:37:52.1014952Z             },
2026-06-21T09:37:52.1015043Z             {
2026-06-21T09:37:52.1015147Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1015242Z               "line": 96
2026-06-21T09:37:52.1015329Z             },
2026-06-21T09:37:52.1015414Z             {
2026-06-21T09:37:52.1015524Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1015610Z               "line": 269
2026-06-21T09:37:52.1015696Z             },
2026-06-21T09:37:52.1015781Z             {
2026-06-21T09:37:52.1015896Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.1015988Z               "line": 148
2026-06-21T09:37:52.1016067Z             }
2026-06-21T09:37:52.1016139Z           ]
2026-06-21T09:37:52.1016226Z         },
2026-06-21T09:37:52.1016307Z         "int": {
2026-06-21T09:37:52.1016391Z           "complete": false,
2026-06-21T09:37:52.1016495Z           "evidence": []
2026-06-21T09:37:52.1016581Z         },
2026-06-21T09:37:52.1016666Z         "unit": {
2026-06-21T09:37:52.1016760Z           "complete": true,
2026-06-21T09:37:52.1016855Z           "evidence": [
2026-06-21T09:37:52.1016932Z             {
2026-06-21T09:37:52.1017061Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1017160Z               "line": 1554
2026-06-21T09:37:52.1017238Z             },
2026-06-21T09:37:52.1017319Z             {
2026-06-21T09:37:52.1017437Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1017533Z               "line": 1577
2026-06-21T09:37:52.1017624Z             },
2026-06-21T09:37:52.1017700Z             {
2026-06-21T09:37:52.1017814Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1017905Z               "line": 1614
2026-06-21T09:37:52.1017991Z             },
2026-06-21T09:37:52.1018072Z             {
2026-06-21T09:37:52.1018192Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1018282Z               "line": 457
2026-06-21T09:37:52.1018362Z             },
2026-06-21T09:37:52.1018453Z             {
2026-06-21T09:37:52.1018573Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.1018667Z               "line": 185
2026-06-21T09:37:52.1018753Z             },
2026-06-21T09:37:52.1018836Z             {
2026-06-21T09:37:52.1019038Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.1019124Z               "line": 206
2026-06-21T09:37:52.1019219Z             },
2026-06-21T09:37:52.1019289Z             {
2026-06-21T09:37:52.1019412Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.1019498Z               "line": 232
2026-06-21T09:37:52.1019581Z             }
2026-06-21T09:37:52.1019674Z           ]
2026-06-21T09:37:52.1019760Z         }
2026-06-21T09:37:52.1019838Z       }
2026-06-21T09:37:52.1019919Z     },
2026-06-21T09:37:52.1020003Z     {
2026-06-21T09:37:52.1020095Z       "id": "REQ-INST-13",
2026-06-21T09:37:52.1020276Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T09:37:52.1020371Z       "requiredStages": [
2026-06-21T09:37:52.1020448Z         "impl",
2026-06-21T09:37:52.1020534Z         "unit"
2026-06-21T09:37:52.1020719Z       ],
2026-06-21T09:37:52.1020815Z       "stages": {
2026-06-21T09:37:52.1020901Z         "doc": {
2026-06-21T09:37:52.1021001Z           "complete": false,
2026-06-21T09:37:52.1021087Z           "evidence": []
2026-06-21T09:37:52.1021177Z         },
2026-06-21T09:37:52.1021263Z         "impl": {
2026-06-21T09:37:52.1021349Z           "complete": true,
2026-06-21T09:37:52.1021431Z           "evidence": [
2026-06-21T09:37:52.1021515Z             {
2026-06-21T09:37:52.1021640Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1021731Z               "line": 100
2026-06-21T09:37:52.1021812Z             },
2026-06-21T09:37:52.1021996Z             {
2026-06-21T09:37:52.1022111Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.1022206Z               "line": 171
2026-06-21T09:37:52.1022287Z             }
2026-06-21T09:37:52.1022383Z           ]
2026-06-21T09:37:52.1022474Z         },
2026-06-21T09:37:52.1022558Z         "int": {
2026-06-21T09:37:52.1022655Z           "complete": false,
2026-06-21T09:37:52.1022745Z           "evidence": []
2026-06-21T09:37:52.1022826Z         },
2026-06-21T09:37:52.1022906Z         "unit": {
2026-06-21T09:37:52.1022998Z           "complete": true,
2026-06-21T09:37:52.1023083Z           "evidence": [
2026-06-21T09:37:52.1023165Z             {
2026-06-21T09:37:52.1023289Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.1023375Z               "line": 261
2026-06-21T09:37:52.1023460Z             },
2026-06-21T09:37:52.1023531Z             {
2026-06-21T09:37:52.1023657Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T09:37:52.1023755Z               "line": 279
2026-06-21T09:37:52.1023836Z             }
2026-06-21T09:37:52.1023913Z           ]
2026-06-21T09:37:52.1023991Z         }
2026-06-21T09:37:52.1024075Z       }
2026-06-21T09:37:52.1024155Z     },
2026-06-21T09:37:52.1024241Z     {
2026-06-21T09:37:52.1024341Z       "id": "REQ-INST-14",
2026-06-21T09:37:52.1024702Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T09:37:52.1024801Z       "requiredStages": [
2026-06-21T09:37:52.1024887Z         "doc",
2026-06-21T09:37:52.1024983Z         "impl",
2026-06-21T09:37:52.1025073Z         "unit"
2026-06-21T09:37:52.1025163Z       ],
2026-06-21T09:37:52.1025255Z       "stages": {
2026-06-21T09:37:52.1025336Z         "doc": {
2026-06-21T09:37:52.1025435Z           "complete": true,
2026-06-21T09:37:52.1025517Z           "evidence": [
2026-06-21T09:37:52.1025599Z             {
2026-06-21T09:37:52.1025698Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1025802Z               "line": 588
2026-06-21T09:37:52.1025889Z             },
2026-06-21T09:37:52.1025969Z             {
2026-06-21T09:37:52.1026069Z               "path": "docs/STORAGE.md",
2026-06-21T09:37:52.1026151Z               "line": 49
2026-06-21T09:37:52.1026242Z             }
2026-06-21T09:37:52.1026341Z           ]
2026-06-21T09:37:52.1026413Z         },
2026-06-21T09:37:52.1026500Z         "impl": {
2026-06-21T09:37:52.1026594Z           "complete": true,
2026-06-21T09:37:52.1026680Z           "evidence": [
2026-06-21T09:37:52.1026761Z             {
2026-06-21T09:37:52.1026900Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1026999Z               "line": 410
2026-06-21T09:37:52.1027079Z             },
2026-06-21T09:37:52.1027165Z             {
2026-06-21T09:37:52.1027287Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1027382Z               "line": 367
2026-06-21T09:37:52.1027463Z             },
2026-06-21T09:37:52.1027564Z             {
2026-06-21T09:37:52.1027673Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1027759Z               "line": 293
2026-06-21T09:37:52.1027841Z             },
2026-06-21T09:37:52.1027926Z             {
2026-06-21T09:37:52.1028039Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1028212Z               "line": 1577
2026-06-21T09:37:52.1028293Z             }
2026-06-21T09:37:52.1028384Z           ]
2026-06-21T09:37:52.1028466Z         },
2026-06-21T09:37:52.1028555Z         "int": {
2026-06-21T09:37:52.1028660Z           "complete": false,
2026-06-21T09:37:52.1028757Z           "evidence": []
2026-06-21T09:37:52.1028842Z         },
2026-06-21T09:37:52.1028932Z         "unit": {
2026-06-21T09:37:52.1029114Z           "complete": true,
2026-06-21T09:37:52.1029208Z           "evidence": [
2026-06-21T09:37:52.1029299Z             {
2026-06-21T09:37:52.1029429Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1029622Z               "line": 1163
2026-06-21T09:37:52.1029703Z             },
2026-06-21T09:37:52.1029789Z             {
2026-06-21T09:37:52.1029911Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1030001Z               "line": 944
2026-06-21T09:37:52.1030088Z             },
2026-06-21T09:37:52.1030169Z             {
2026-06-21T09:37:52.1030297Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1030374Z               "line": 1205
2026-06-21T09:37:52.1030460Z             },
2026-06-21T09:37:52.1030550Z             {
2026-06-21T09:37:52.1030655Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1030755Z               "line": 659
2026-06-21T09:37:52.1030836Z             },
2026-06-21T09:37:52.1030926Z             {
2026-06-21T09:37:52.1031027Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1031117Z               "line": 8070
2026-06-21T09:37:52.1031208Z             }
2026-06-21T09:37:52.1031289Z           ]
2026-06-21T09:37:52.1031380Z         }
2026-06-21T09:37:52.1031461Z       }
2026-06-21T09:37:52.1031546Z     },
2026-06-21T09:37:52.1031629Z     {
2026-06-21T09:37:52.1031728Z       "id": "REQ-INST-15",
2026-06-21T09:37:52.1032428Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T09:37:52.1032523Z       "requiredStages": [
2026-06-21T09:37:52.1032604Z         "doc",
2026-06-21T09:37:52.1032686Z         "impl",
2026-06-21T09:37:52.1032771Z         "unit"
2026-06-21T09:37:52.1032857Z       ],
2026-06-21T09:37:52.1032938Z       "stages": {
2026-06-21T09:37:52.1033029Z         "doc": {
2026-06-21T09:37:52.1033118Z           "complete": true,
2026-06-21T09:37:52.1033215Z           "evidence": [
2026-06-21T09:37:52.1033296Z             {
2026-06-21T09:37:52.1033471Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T09:37:52.1033558Z               "line": 3
2026-06-21T09:37:52.1033644Z             }
2026-06-21T09:37:52.1033725Z           ]
2026-06-21T09:37:52.1033805Z         },
2026-06-21T09:37:52.1033897Z         "impl": {
2026-06-21T09:37:52.1033977Z           "complete": true,
2026-06-21T09:37:52.1034068Z           "evidence": [
2026-06-21T09:37:52.1034154Z             {
2026-06-21T09:37:52.1034279Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1034368Z               "line": 353
2026-06-21T09:37:52.1034455Z             },
2026-06-21T09:37:52.1034541Z             {
2026-06-21T09:37:52.1034658Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1034744Z               "line": 60
2026-06-21T09:37:52.1034830Z             },
2026-06-21T09:37:52.1034915Z             {
2026-06-21T09:37:52.1035047Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.1035147Z               "line": 368
2026-06-21T09:37:52.1035243Z             },
2026-06-21T09:37:52.1035323Z             {
2026-06-21T09:37:52.1035462Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.1035557Z               "line": 417
2026-06-21T09:37:52.1035643Z             },
2026-06-21T09:37:52.1035858Z             {
2026-06-21T09:37:52.1035958Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1036052Z               "line": 19
2026-06-21T09:37:52.1036130Z             },
2026-06-21T09:37:52.1036220Z             {
2026-06-21T09:37:52.1036324Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1036416Z               "line": 70
2026-06-21T09:37:52.1036506Z             },
2026-06-21T09:37:52.1036573Z             {
2026-06-21T09:37:52.1036692Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1036779Z               "line": 96
2026-06-21T09:37:52.1036873Z             },
2026-06-21T09:37:52.1036958Z             {
2026-06-21T09:37:52.1037136Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1037235Z               "line": 121
2026-06-21T09:37:52.1037317Z             },
2026-06-21T09:37:52.1037399Z             {
2026-06-21T09:37:52.1037502Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1037597Z               "line": 172
2026-06-21T09:37:52.1037688Z             },
2026-06-21T09:37:52.1037769Z             {
2026-06-21T09:37:52.1037895Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1037980Z               "line": 178
2026-06-21T09:37:52.1038067Z             },
2026-06-21T09:37:52.1038158Z             {
2026-06-21T09:37:52.1038266Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1038358Z               "line": 1469
2026-06-21T09:37:52.1038429Z             }
2026-06-21T09:37:52.1038524Z           ]
2026-06-21T09:37:52.1038609Z         },
2026-06-21T09:37:52.1038697Z         "int": {
2026-06-21T09:37:52.1038792Z           "complete": false,
2026-06-21T09:37:52.1038896Z           "evidence": []
2026-06-21T09:37:52.1039054Z         },
2026-06-21T09:37:52.1039135Z         "unit": {
2026-06-21T09:37:52.1039235Z           "complete": true,
2026-06-21T09:37:52.1039317Z           "evidence": [
2026-06-21T09:37:52.1039397Z             {
2026-06-21T09:37:52.1039530Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.1039622Z               "line": 577
2026-06-21T09:37:52.1039703Z             },
2026-06-21T09:37:52.1039778Z             {
2026-06-21T09:37:52.1039903Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.1039990Z               "line": 638
2026-06-21T09:37:52.1040074Z             },
2026-06-21T09:37:52.1040154Z             {
2026-06-21T09:37:52.1040263Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1040358Z               "line": 213
2026-06-21T09:37:52.1040438Z             },
2026-06-21T09:37:52.1040528Z             {
2026-06-21T09:37:52.1040638Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1040734Z               "line": 249
2026-06-21T09:37:52.1040814Z             },
2026-06-21T09:37:52.1040895Z             {
2026-06-21T09:37:52.1041010Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1041095Z               "line": 262
2026-06-21T09:37:52.1049675Z             },
2026-06-21T09:37:52.1049780Z             {
2026-06-21T09:37:52.1049915Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T09:37:52.1050018Z               "line": 338
2026-06-21T09:37:52.1050105Z             },
2026-06-21T09:37:52.1050187Z             {
2026-06-21T09:37:52.1050319Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1050400Z               "line": 690
2026-06-21T09:37:52.1050478Z             },
2026-06-21T09:37:52.1050564Z             {
2026-06-21T09:37:52.1050681Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1050761Z               "line": 8007
2026-06-21T09:37:52.1050867Z             },
2026-06-21T09:37:52.1050955Z             {
2026-06-21T09:37:52.1051064Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1051145Z               "line": 9837
2026-06-21T09:37:52.1051232Z             }
2026-06-21T09:37:52.1051322Z           ]
2026-06-21T09:37:52.1051398Z         }
2026-06-21T09:37:52.1051632Z       }
2026-06-21T09:37:52.1051717Z     },
2026-06-21T09:37:52.1051800Z     {
2026-06-21T09:37:52.1051895Z       "id": "REQ-INST-2",
2026-06-21T09:37:52.1052023Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T09:37:52.1052115Z       "requiredStages": [
2026-06-21T09:37:52.1052190Z         "impl",
2026-06-21T09:37:52.1052276Z         "unit"
2026-06-21T09:37:52.1052356Z       ],
2026-06-21T09:37:52.1052444Z       "stages": {
2026-06-21T09:37:52.1052529Z         "doc": {
2026-06-21T09:37:52.1052628Z           "complete": false,
2026-06-21T09:37:52.1052715Z           "evidence": []
2026-06-21T09:37:52.1052792Z         },
2026-06-21T09:37:52.1052982Z         "impl": {
2026-06-21T09:37:52.1053068Z           "complete": true,
2026-06-21T09:37:52.1053167Z           "evidence": [
2026-06-21T09:37:52.1053239Z             {
2026-06-21T09:37:52.1053373Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1053464Z               "line": 108
2026-06-21T09:37:52.1053558Z             },
2026-06-21T09:37:52.1053643Z             {
2026-06-21T09:37:52.1053758Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.1053849Z               "line": 28
2026-06-21T09:37:52.1053929Z             },
2026-06-21T09:37:52.1054010Z             {
2026-06-21T09:37:52.1054135Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.1054225Z               "line": 74
2026-06-21T09:37:52.1054306Z             },
2026-06-21T09:37:52.1054388Z             {
2026-06-21T09:37:52.1054493Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.1054582Z               "line": 96
2026-06-21T09:37:52.1054679Z             },
2026-06-21T09:37:52.1054764Z             {
2026-06-21T09:37:52.1054878Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.1054959Z               "line": 86
2026-06-21T09:37:52.1055041Z             },
2026-06-21T09:37:52.1055131Z             {
2026-06-21T09:37:52.1055230Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T09:37:52.1055332Z               "line": 118
2026-06-21T09:37:52.1055413Z             }
2026-06-21T09:37:52.1055493Z           ]
2026-06-21T09:37:52.1055584Z         },
2026-06-21T09:37:52.1055661Z         "int": {
2026-06-21T09:37:52.1055765Z           "complete": false,
2026-06-21T09:37:52.1055855Z           "evidence": []
2026-06-21T09:37:52.1055936Z         },
2026-06-21T09:37:52.1056026Z         "unit": {
2026-06-21T09:37:52.1056115Z           "complete": true,
2026-06-21T09:37:52.1056205Z           "evidence": [
2026-06-21T09:37:52.1056277Z             {
2026-06-21T09:37:52.1056397Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T09:37:52.1056486Z               "line": 250
2026-06-21T09:37:52.1056577Z             },
2026-06-21T09:37:52.1056659Z             {
2026-06-21T09:37:52.1056763Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.1056853Z               "line": 280
2026-06-21T09:37:52.1056935Z             }
2026-06-21T09:37:52.1057030Z           ]
2026-06-21T09:37:52.1057116Z         }
2026-06-21T09:37:52.1057197Z       }
2026-06-21T09:37:52.1057284Z     },
2026-06-21T09:37:52.1057369Z     {
2026-06-21T09:37:52.1057463Z       "id": "REQ-INST-3",
2026-06-21T09:37:52.1057617Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T09:37:52.1057722Z       "requiredStages": [
2026-06-21T09:37:52.1057807Z         "doc",
2026-06-21T09:37:52.1057894Z         "impl",
2026-06-21T09:37:52.1057974Z         "unit"
2026-06-21T09:37:52.1058060Z       ],
2026-06-21T09:37:52.1058146Z       "stages": {
2026-06-21T09:37:52.1058233Z         "doc": {
2026-06-21T09:37:52.1058336Z           "complete": true,
2026-06-21T09:37:52.1058422Z           "evidence": [
2026-06-21T09:37:52.1058505Z             {
2026-06-21T09:37:52.1058618Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T09:37:52.1058703Z               "line": 3
2026-06-21T09:37:52.1058783Z             }
2026-06-21T09:37:52.1058865Z           ]
2026-06-21T09:37:52.1059154Z         },
2026-06-21T09:37:52.1059240Z         "impl": {
2026-06-21T09:37:52.1059339Z           "complete": true,
2026-06-21T09:37:52.1059429Z           "evidence": [
2026-06-21T09:37:52.1059536Z             {
2026-06-21T09:37:52.1059658Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.1059744Z               "line": 59
2026-06-21T09:37:52.1059831Z             },
2026-06-21T09:37:52.1059912Z             {
2026-06-21T09:37:52.1060045Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1060136Z               "line": 480
2026-06-21T09:37:52.1060217Z             },
2026-06-21T09:37:52.1060302Z             {
2026-06-21T09:37:52.1060527Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1060613Z               "line": 254
2026-06-21T09:37:52.1060703Z             },
2026-06-21T09:37:52.1060790Z             {
2026-06-21T09:37:52.1060912Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1061009Z               "line": 384
2026-06-21T09:37:52.1061095Z             },
2026-06-21T09:37:52.1061175Z             {
2026-06-21T09:37:52.1061303Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1061388Z               "line": 418
2026-06-21T09:37:52.1061474Z             },
2026-06-21T09:37:52.1061558Z             {
2026-06-21T09:37:52.1061672Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T09:37:52.1061759Z               "line": 74
2026-06-21T09:37:52.1061845Z             },
2026-06-21T09:37:52.1061930Z             {
2026-06-21T09:37:52.1062065Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1062160Z               "line": 234
2026-06-21T09:37:52.1062244Z             },
2026-06-21T09:37:52.1062326Z             {
2026-06-21T09:37:52.1062445Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1062530Z               "line": 396
2026-06-21T09:37:52.1062611Z             },
2026-06-21T09:37:52.1062713Z             {
2026-06-21T09:37:52.1062827Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1062917Z               "line": 45
2026-06-21T09:37:52.1062999Z             },
2026-06-21T09:37:52.1063079Z             {
2026-06-21T09:37:52.1063193Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1063285Z               "line": 114
2026-06-21T09:37:52.1063371Z             },
2026-06-21T09:37:52.1063455Z             {
2026-06-21T09:37:52.1063575Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1063653Z               "line": 152
2026-06-21T09:37:52.1063737Z             },
2026-06-21T09:37:52.1063828Z             {
2026-06-21T09:37:52.1063948Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1064042Z               "line": 168
2026-06-21T09:37:52.1064118Z             },
2026-06-21T09:37:52.1064203Z             {
2026-06-21T09:37:52.1064313Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1064413Z               "line": 178
2026-06-21T09:37:52.1064489Z             },
2026-06-21T09:37:52.1064575Z             {
2026-06-21T09:37:52.1064695Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1064780Z               "line": 210
2026-06-21T09:37:52.1064866Z             },
2026-06-21T09:37:52.1064953Z             {
2026-06-21T09:37:52.1065067Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1065147Z               "line": 287
2026-06-21T09:37:52.1065239Z             },
2026-06-21T09:37:52.1065315Z             {
2026-06-21T09:37:52.1065424Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1065525Z               "line": 311
2026-06-21T09:37:52.1065715Z             },
2026-06-21T09:37:52.1065805Z             {
2026-06-21T09:37:52.1065916Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1066001Z               "line": 389
2026-06-21T09:37:52.1066087Z             },
2026-06-21T09:37:52.1066283Z             {
2026-06-21T09:37:52.1066405Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1066486Z               "line": 438
2026-06-21T09:37:52.1066572Z             },
2026-06-21T09:37:52.1066651Z             {
2026-06-21T09:37:52.1066770Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T09:37:52.1066866Z               "line": 37
2026-06-21T09:37:52.1066952Z             },
2026-06-21T09:37:52.1067037Z             {
2026-06-21T09:37:52.1067147Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1067243Z               "line": 62
2026-06-21T09:37:52.1067323Z             },
2026-06-21T09:37:52.1067486Z             {
2026-06-21T09:37:52.1067600Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1067690Z               "line": 279
2026-06-21T09:37:52.1067777Z             },
2026-06-21T09:37:52.1067858Z             {
2026-06-21T09:37:52.1067967Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1068072Z               "line": 1848
2026-06-21T09:37:52.1068153Z             }
2026-06-21T09:37:52.1068234Z           ]
2026-06-21T09:37:52.1068320Z         },
2026-06-21T09:37:52.1068411Z         "int": {
2026-06-21T09:37:52.1068497Z           "complete": false,
2026-06-21T09:37:52.1068591Z           "evidence": []
2026-06-21T09:37:52.1068677Z         },
2026-06-21T09:37:52.1068755Z         "unit": {
2026-06-21T09:37:52.1068863Z           "complete": true,
2026-06-21T09:37:52.1069036Z           "evidence": [
2026-06-21T09:37:52.1069112Z             {
2026-06-21T09:37:52.1069230Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.1069334Z               "line": 360
2026-06-21T09:37:52.1069415Z             },
2026-06-21T09:37:52.1069495Z             {
2026-06-21T09:37:52.1069622Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1069709Z               "line": 837
2026-06-21T09:37:52.1069790Z             },
2026-06-21T09:37:52.1069876Z             {
2026-06-21T09:37:52.1069994Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1070082Z               "line": 894
2026-06-21T09:37:52.1070163Z             },
2026-06-21T09:37:52.1070252Z             {
2026-06-21T09:37:52.1070363Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.1070457Z               "line": 889
2026-06-21T09:37:52.1070543Z             },
2026-06-21T09:37:52.1070634Z             {
2026-06-21T09:37:52.1070754Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.1070835Z               "line": 1014
2026-06-21T09:37:52.1070920Z             },
2026-06-21T09:37:52.1071007Z             {
2026-06-21T09:37:52.1071129Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1071220Z               "line": 1264
2026-06-21T09:37:52.1071298Z             },
2026-06-21T09:37:52.1071388Z             {
2026-06-21T09:37:52.1071502Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1071583Z               "line": 1405
2026-06-21T09:37:52.1071665Z             },
2026-06-21T09:37:52.1071745Z             {
2026-06-21T09:37:52.1071858Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1071944Z               "line": 449
2026-06-21T09:37:52.1072030Z             },
2026-06-21T09:37:52.1072113Z             {
2026-06-21T09:37:52.1072227Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1072309Z               "line": 485
2026-06-21T09:37:52.1072396Z             },
2026-06-21T09:37:52.1072470Z             {
2026-06-21T09:37:52.1072576Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1072676Z               "line": 540
2026-06-21T09:37:52.1072762Z             },
2026-06-21T09:37:52.1072838Z             {
2026-06-21T09:37:52.1072954Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1073044Z               "line": 697
2026-06-21T09:37:52.1073128Z             },
2026-06-21T09:37:52.1073315Z             {
2026-06-21T09:37:52.1073438Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1073520Z               "line": 931
2026-06-21T09:37:52.1073607Z             },
2026-06-21T09:37:52.1073692Z             {
2026-06-21T09:37:52.1073802Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1073888Z               "line": 945
2026-06-21T09:37:52.1073968Z             },
2026-06-21T09:37:52.1074059Z             {
2026-06-21T09:37:52.1074170Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1074256Z               "line": 1290
2026-06-21T09:37:52.1074455Z             },
2026-06-21T09:37:52.1074542Z             {
2026-06-21T09:37:52.1074654Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1074735Z               "line": 609
2026-06-21T09:37:52.1074830Z             },
2026-06-21T09:37:52.1074907Z             {
2026-06-21T09:37:52.1075016Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1075106Z               "line": 8031
2026-06-21T09:37:52.1075193Z             }
2026-06-21T09:37:52.1075279Z           ]
2026-06-21T09:37:52.1075359Z         }
2026-06-21T09:37:52.1075446Z       }
2026-06-21T09:37:52.1075532Z     },
2026-06-21T09:37:52.1075617Z     {
2026-06-21T09:37:52.1075712Z       "id": "REQ-INST-4",
2026-06-21T09:37:52.1075894Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T09:37:52.1075998Z       "requiredStages": [
2026-06-21T09:37:52.1076090Z         "impl",
2026-06-21T09:37:52.1076171Z         "unit"
2026-06-21T09:37:52.1076256Z       ],
2026-06-21T09:37:52.1076347Z       "stages": {
2026-06-21T09:37:52.1076434Z         "doc": {
2026-06-21T09:37:52.1076533Z           "complete": false,
2026-06-21T09:37:52.1076628Z           "evidence": []
2026-06-21T09:37:52.1076709Z         },
2026-06-21T09:37:52.1076791Z         "impl": {
2026-06-21T09:37:52.1076880Z           "complete": true,
2026-06-21T09:37:52.1076979Z           "evidence": [
2026-06-21T09:37:52.1077060Z             {
2026-06-21T09:37:52.1077188Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1077282Z               "line": 385
2026-06-21T09:37:52.1077363Z             },
2026-06-21T09:37:52.1077445Z             {
2026-06-21T09:37:52.1077559Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1077649Z               "line": 202
2026-06-21T09:37:52.1077731Z             },
2026-06-21T09:37:52.1077817Z             {
2026-06-21T09:37:52.1080798Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1080914Z               "line": 234
2026-06-21T09:37:52.1081018Z             },
2026-06-21T09:37:52.1081103Z             {
2026-06-21T09:37:52.1081238Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1081318Z               "line": 274
2026-06-21T09:37:52.1081404Z             }
2026-06-21T09:37:52.1081485Z           ]
2026-06-21T09:37:52.1081571Z         },
2026-06-21T09:37:52.1081661Z         "int": {
2026-06-21T09:37:52.1081757Z           "complete": false,
2026-06-21T09:37:52.1081853Z           "evidence": []
2026-06-21T09:37:52.1081924Z         },
2026-06-21T09:37:52.1082014Z         "unit": {
2026-06-21T09:37:52.1082109Z           "complete": true,
2026-06-21T09:37:52.1082192Z           "evidence": [
2026-06-21T09:37:52.1082287Z             {
2026-06-21T09:37:52.1082418Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1082514Z               "line": 889
2026-06-21T09:37:52.1082594Z             },
2026-06-21T09:37:52.1082678Z             {
2026-06-21T09:37:52.1082807Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1082894Z               "line": 561
2026-06-21T09:37:52.1082979Z             },
2026-06-21T09:37:52.1083064Z             {
2026-06-21T09:37:52.1083185Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1083265Z               "line": 668
2026-06-21T09:37:52.1083485Z             },
2026-06-21T09:37:52.1083575Z             {
2026-06-21T09:37:52.1083693Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1083785Z               "line": 750
2026-06-21T09:37:52.1083866Z             }
2026-06-21T09:37:52.1083942Z           ]
2026-06-21T09:37:52.1084027Z         }
2026-06-21T09:37:52.1084100Z       }
2026-06-21T09:37:52.1084190Z     },
2026-06-21T09:37:52.1084271Z     {
2026-06-21T09:37:52.1084357Z       "id": "REQ-INST-5",
2026-06-21T09:37:52.1084547Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T09:37:52.1084647Z       "requiredStages": [
2026-06-21T09:37:52.1084830Z         "impl",
2026-06-21T09:37:52.1084914Z         "unit",
2026-06-21T09:37:52.1084996Z         "int"
2026-06-21T09:37:52.1085083Z       ],
2026-06-21T09:37:52.1085173Z       "stages": {
2026-06-21T09:37:52.1085247Z         "doc": {
2026-06-21T09:37:52.1085347Z           "complete": false,
2026-06-21T09:37:52.1085444Z           "evidence": []
2026-06-21T09:37:52.1085529Z         },
2026-06-21T09:37:52.1085614Z         "impl": {
2026-06-21T09:37:52.1085696Z           "complete": true,
2026-06-21T09:37:52.1085801Z           "evidence": [
2026-06-21T09:37:52.1085886Z             {
2026-06-21T09:37:52.1086016Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T09:37:52.1086106Z               "line": 85
2026-06-21T09:37:52.1086182Z             },
2026-06-21T09:37:52.1086263Z             {
2026-06-21T09:37:52.1086378Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1086463Z               "line": 68
2026-06-21T09:37:52.1086553Z             },
2026-06-21T09:37:52.1086645Z             {
2026-06-21T09:37:52.1086759Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1086883Z               "line": 99
2026-06-21T09:37:52.1086974Z             },
2026-06-21T09:37:52.1087056Z             {
2026-06-21T09:37:52.1087159Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1087454Z               "line": 183
2026-06-21T09:37:52.1087659Z             },
2026-06-21T09:37:52.1087829Z             {
2026-06-21T09:37:52.1088049Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1088291Z               "line": 314
2026-06-21T09:37:52.1088477Z             }
2026-06-21T09:37:52.1088640Z           ]
2026-06-21T09:37:52.1088801Z         },
2026-06-21T09:37:52.1089054Z         "int": {
2026-06-21T09:37:52.1089226Z           "complete": true,
2026-06-21T09:37:52.1089430Z           "evidence": [
2026-06-21T09:37:52.1089612Z             {
2026-06-21T09:37:52.1089817Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1090074Z               "line": 156
2026-06-21T09:37:52.1090256Z             },
2026-06-21T09:37:52.1090421Z             {
2026-06-21T09:37:52.1090611Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:37:52.1090853Z               "line": 145
2026-06-21T09:37:52.1091034Z             },
2026-06-21T09:37:52.1091230Z             {
2026-06-21T09:37:52.1091435Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1091687Z               "line": 707
2026-06-21T09:37:52.1091869Z             },
2026-06-21T09:37:52.1092035Z             {
2026-06-21T09:37:52.1092226Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1092465Z               "line": 1069
2026-06-21T09:37:52.1092655Z             }
2026-06-21T09:37:52.1092809Z           ]
2026-06-21T09:37:52.1092969Z         },
2026-06-21T09:37:52.1093126Z         "unit": {
2026-06-21T09:37:52.1093309Z           "complete": true,
2026-06-21T09:37:52.1093502Z           "evidence": [
2026-06-21T09:37:52.1093691Z             {
2026-06-21T09:37:52.1093873Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1094112Z               "line": 552
2026-06-21T09:37:52.1094297Z             },
2026-06-21T09:37:52.1094459Z             {
2026-06-21T09:37:52.1094640Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1094990Z               "line": 595
2026-06-21T09:37:52.1095170Z             },
2026-06-21T09:37:52.1095323Z             {
2026-06-21T09:37:52.1095518Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:37:52.1095756Z               "line": 219
2026-06-21T09:37:52.1095936Z             }
2026-06-21T09:37:52.1096104Z           ]
2026-06-21T09:37:52.1096261Z         }
2026-06-21T09:37:52.1096423Z       }
2026-06-21T09:37:52.1096576Z     },
2026-06-21T09:37:52.1096729Z     {
2026-06-21T09:37:52.1096895Z       "id": "REQ-INST-6",
2026-06-21T09:37:52.1097171Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T09:37:52.1097592Z       "requiredStages": [
2026-06-21T09:37:52.1097781Z         "impl",
2026-06-21T09:37:52.1097949Z         "unit",
2026-06-21T09:37:52.1098123Z         "int"
2026-06-21T09:37:52.1098285Z       ],
2026-06-21T09:37:52.1098445Z       "stages": {
2026-06-21T09:37:52.1098619Z         "doc": {
2026-06-21T09:37:52.1098794Z           "complete": true,
2026-06-21T09:37:52.1099046Z           "evidence": [
2026-06-21T09:37:52.1099223Z             {
2026-06-21T09:37:52.1099448Z               "path": "docs/DEFERRED.md",
2026-06-21T09:37:52.1099685Z               "line": 13
2026-06-21T09:37:52.1099858Z             }
2026-06-21T09:37:52.1100014Z           ]
2026-06-21T09:37:52.1100163Z         },
2026-06-21T09:37:52.1100319Z         "impl": {
2026-06-21T09:37:52.1100497Z           "complete": true,
2026-06-21T09:37:52.1100692Z           "evidence": [
2026-06-21T09:37:52.1100872Z             {
2026-06-21T09:37:52.1101067Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1101312Z               "line": 391
2026-06-21T09:37:52.1101500Z             },
2026-06-21T09:37:52.1101656Z             {
2026-06-21T09:37:52.1101847Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:37:52.1102100Z               "line": 27
2026-06-21T09:37:52.1102290Z             },
2026-06-21T09:37:52.1102462Z             {
2026-06-21T09:37:52.1102653Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:37:52.1102924Z               "line": 73
2026-06-21T09:37:52.1103115Z             },
2026-06-21T09:37:52.1103298Z             {
2026-06-21T09:37:52.1103491Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T09:37:52.1103728Z               "line": 182
2026-06-21T09:37:52.1103903Z             },
2026-06-21T09:37:52.1104071Z             {
2026-06-21T09:37:52.1104261Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1104503Z               "line": 426
2026-06-21T09:37:52.1104681Z             },
2026-06-21T09:37:52.1104852Z             {
2026-06-21T09:37:52.1105043Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T09:37:52.1105282Z               "line": 31
2026-06-21T09:37:52.1105462Z             },
2026-06-21T09:37:52.1105625Z             {
2026-06-21T09:37:52.1105821Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1106069Z               "line": 202
2026-06-21T09:37:52.1106246Z             },
2026-06-21T09:37:52.1106415Z             {
2026-06-21T09:37:52.1106592Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.1106826Z               "line": 83
2026-06-21T09:37:52.1106997Z             },
2026-06-21T09:37:52.1107160Z             {
2026-06-21T09:37:52.1107345Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1107570Z               "line": 1849
2026-06-21T09:37:52.1107750Z             },
2026-06-21T09:37:52.1107903Z             {
2026-06-21T09:37:52.1108095Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1108332Z               "line": 179
2026-06-21T09:37:52.1108509Z             },
2026-06-21T09:37:52.1108674Z             {
2026-06-21T09:37:52.1108869Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1109221Z               "line": 215
2026-06-21T09:37:52.1109402Z             }
2026-06-21T09:37:52.1109568Z           ]
2026-06-21T09:37:52.1109836Z         },
2026-06-21T09:37:52.1110013Z         "int": {
2026-06-21T09:37:52.1110180Z           "complete": true,
2026-06-21T09:37:52.1110375Z           "evidence": [
2026-06-21T09:37:52.1110550Z             {
2026-06-21T09:37:52.1110752Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1111005Z               "line": 721
2026-06-21T09:37:52.1111194Z             },
2026-06-21T09:37:52.1111363Z             {
2026-06-21T09:37:52.1111555Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1111801Z               "line": 1114
2026-06-21T09:37:52.1111998Z             },
2026-06-21T09:37:52.1112264Z             {
2026-06-21T09:37:52.1112449Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1112684Z               "line": 726
2026-06-21T09:37:52.1112865Z             }
2026-06-21T09:37:52.1113022Z           ]
2026-06-21T09:37:52.1113174Z         },
2026-06-21T09:37:52.1113337Z         "unit": {
2026-06-21T09:37:52.1113524Z           "complete": true,
2026-06-21T09:37:52.1113713Z           "evidence": [
2026-06-21T09:37:52.1113882Z             {
2026-06-21T09:37:52.1114080Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1114330Z               "line": 661
2026-06-21T09:37:52.1114506Z             },
2026-06-21T09:37:52.1114669Z             {
2026-06-21T09:37:52.1114860Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1115117Z               "line": 899
2026-06-21T09:37:52.1115303Z             },
2026-06-21T09:37:52.1115456Z             {
2026-06-21T09:37:52.1115646Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T09:37:52.1115890Z               "line": 66
2026-06-21T09:37:52.1116076Z             },
2026-06-21T09:37:52.1116242Z             {
2026-06-21T09:37:52.1116429Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1116671Z               "line": 297
2026-06-21T09:37:52.1116862Z             },
2026-06-21T09:37:52.1117033Z             {
2026-06-21T09:37:52.1117224Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.1117458Z               "line": 203
2026-06-21T09:37:52.1117633Z             }
2026-06-21T09:37:52.1117801Z           ]
2026-06-21T09:37:52.1117952Z         }
2026-06-21T09:37:52.1118101Z       }
2026-06-21T09:37:52.1118267Z     },
2026-06-21T09:37:52.1118431Z     {
2026-06-21T09:37:52.1118591Z       "id": "REQ-INST-7",
2026-06-21T09:37:52.1118830Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T09:37:52.1119196Z       "requiredStages": [
2026-06-21T09:37:52.1119387Z         "impl",
2026-06-21T09:37:52.1119561Z         "unit",
2026-06-21T09:37:52.1119739Z         "int"
2026-06-21T09:37:52.1119900Z       ],
2026-06-21T09:37:52.1120082Z       "stages": {
2026-06-21T09:37:52.1120253Z         "doc": {
2026-06-21T09:37:52.1120429Z           "complete": false,
2026-06-21T09:37:52.1120630Z           "evidence": []
2026-06-21T09:37:52.1120815Z         },
2026-06-21T09:37:52.1120983Z         "impl": {
2026-06-21T09:37:52.1121158Z           "complete": true,
2026-06-21T09:37:52.1121354Z           "evidence": [
2026-06-21T09:37:52.1121532Z             {
2026-06-21T09:37:52.1121731Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1121970Z               "line": 436
2026-06-21T09:37:52.1122154Z             },
2026-06-21T09:37:52.1122320Z             {
2026-06-21T09:37:52.1122529Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1122781Z               "line": 27
2026-06-21T09:37:52.1122954Z             },
2026-06-21T09:37:52.1123120Z             {
2026-06-21T09:37:52.1123334Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1123587Z               "line": 207
2026-06-21T09:37:52.1123769Z             },
2026-06-21T09:37:52.1123930Z             {
2026-06-21T09:37:52.1124127Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1124374Z               "line": 344
2026-06-21T09:37:52.1124687Z             },
2026-06-21T09:37:52.1124858Z             {
2026-06-21T09:37:52.1125048Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T09:37:52.1125291Z               "line": 59
2026-06-21T09:37:52.1125473Z             },
2026-06-21T09:37:52.1125638Z             {
2026-06-21T09:37:52.1125830Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1126069Z               "line": 41
2026-06-21T09:37:52.1126254Z             },
2026-06-21T09:37:52.1126407Z             {
2026-06-21T09:37:52.1126611Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.1126869Z               "line": 27
2026-06-21T09:37:52.1127155Z             },
2026-06-21T09:37:52.1127319Z             {
2026-06-21T09:37:52.1127512Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.1127760Z               "line": 119
2026-06-21T09:37:52.1127936Z             },
2026-06-21T09:37:52.1128108Z             {
2026-06-21T09:37:52.1128313Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.1128575Z               "line": 134
2026-06-21T09:37:52.1128757Z             },
2026-06-21T09:37:52.1128924Z             {
2026-06-21T09:37:52.1129215Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T09:37:52.1129457Z               "line": 139
2026-06-21T09:37:52.1129629Z             }
2026-06-21T09:37:52.1129790Z           ]
2026-06-21T09:37:52.1129947Z         },
2026-06-21T09:37:52.1130107Z         "int": {
2026-06-21T09:37:52.1130275Z           "complete": true,
2026-06-21T09:37:52.1130474Z           "evidence": [
2026-06-21T09:37:52.1130665Z             {
2026-06-21T09:37:52.1130847Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:37:52.1131089Z               "line": 145
2026-06-21T09:37:52.1131275Z             },
2026-06-21T09:37:52.1131437Z             {
2026-06-21T09:37:52.1131629Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1131881Z               "line": 665
2026-06-21T09:37:52.1132058Z             },
2026-06-21T09:37:52.1132220Z             {
2026-06-21T09:37:52.1132406Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1132652Z               "line": 964
2026-06-21T09:37:52.1132828Z             }
2026-06-21T09:37:52.1132988Z           ]
2026-06-21T09:37:52.1133147Z         },
2026-06-21T09:37:52.1133317Z         "unit": {
2026-06-21T09:37:52.1133494Z           "complete": true,
2026-06-21T09:37:52.1133695Z           "evidence": [
2026-06-21T09:37:52.1133867Z             {
2026-06-21T09:37:52.1134067Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1134329Z               "line": 1134
2026-06-21T09:37:52.1134514Z             },
2026-06-21T09:37:52.1134682Z             {
2026-06-21T09:37:52.1134881Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1135134Z               "line": 1521
2026-06-21T09:37:52.1135324Z             },
2026-06-21T09:37:52.1135498Z             {
2026-06-21T09:37:52.1135694Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T09:37:52.1135942Z               "line": 84
2026-06-21T09:37:52.1136122Z             },
2026-06-21T09:37:52.1136291Z             {
2026-06-21T09:37:52.1136485Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1136738Z               "line": 812
2026-06-21T09:37:52.1136915Z             },
2026-06-21T09:37:52.1137086Z             {
2026-06-21T09:37:52.1137273Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1137516Z               "line": 823
2026-06-21T09:37:52.1137691Z             },
2026-06-21T09:37:52.1137859Z             {
2026-06-21T09:37:52.1138053Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1138297Z               "line": 838
2026-06-21T09:37:52.1138482Z             },
2026-06-21T09:37:52.1138645Z             {
2026-06-21T09:37:52.1138841Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.1139260Z               "line": 166
2026-06-21T09:37:52.1139441Z             },
2026-06-21T09:37:52.1139607Z             {
2026-06-21T09:37:52.1139804Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.1140046Z               "line": 181
2026-06-21T09:37:52.1140227Z             },
2026-06-21T09:37:52.1140388Z             {
2026-06-21T09:37:52.1140577Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.1140826Z               "line": 214
2026-06-21T09:37:52.1141010Z             }
2026-06-21T09:37:52.1141155Z           ]
2026-06-21T09:37:52.1141315Z         }
2026-06-21T09:37:52.1141568Z       }
2026-06-21T09:37:52.1141736Z     },
2026-06-21T09:37:52.1141888Z     {
2026-06-21T09:37:52.1142056Z       "id": "REQ-INST-8",
2026-06-21T09:37:52.1142298Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T09:37:52.1142575Z       "requiredStages": [
2026-06-21T09:37:52.1142761Z         "impl",
2026-06-21T09:37:52.1142923Z         "unit",
2026-06-21T09:37:52.1143090Z         "int"
2026-06-21T09:37:52.1143246Z       ],
2026-06-21T09:37:52.1146870Z       "stages": {
2026-06-21T09:37:52.1147078Z         "doc": {
2026-06-21T09:37:52.1147264Z           "complete": false,
2026-06-21T09:37:52.1147504Z           "evidence": []
2026-06-21T09:37:52.1147713Z         },
2026-06-21T09:37:52.1147894Z         "impl": {
2026-06-21T09:37:52.1148076Z           "complete": true,
2026-06-21T09:37:52.1148275Z           "evidence": [
2026-06-21T09:37:52.1148458Z             {
2026-06-21T09:37:52.1148665Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.1148928Z               "line": 104
2026-06-21T09:37:52.1149210Z             },
2026-06-21T09:37:52.1149372Z             {
2026-06-21T09:37:52.1149566Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.1149805Z               "line": 351
2026-06-21T09:37:52.1149981Z             },
2026-06-21T09:37:52.1150153Z             {
2026-06-21T09:37:52.1150355Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.1150592Z               "line": 391
2026-06-21T09:37:52.1150764Z             },
2026-06-21T09:37:52.1150920Z             {
2026-06-21T09:37:52.1151114Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1151352Z               "line": 62
2026-06-21T09:37:52.1151523Z             }
2026-06-21T09:37:52.1151676Z           ]
2026-06-21T09:37:52.1151847Z         },
2026-06-21T09:37:52.1152010Z         "int": {
2026-06-21T09:37:52.1152181Z           "complete": true,
2026-06-21T09:37:52.1163051Z           "evidence": [
2026-06-21T09:37:52.1163300Z             {
2026-06-21T09:37:52.1163529Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1163801Z               "line": 415
2026-06-21T09:37:52.1163995Z             },
2026-06-21T09:37:52.1164177Z             {
2026-06-21T09:37:52.1164380Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1164636Z               "line": 1028
2026-06-21T09:37:52.1164818Z             }
2026-06-21T09:37:52.1164983Z           ]
2026-06-21T09:37:52.1165142Z         },
2026-06-21T09:37:52.1165307Z         "unit": {
2026-06-21T09:37:52.1165494Z           "complete": true,
2026-06-21T09:37:52.1165813Z           "evidence": [
2026-06-21T09:37:52.1166004Z             {
2026-06-21T09:37:52.1166209Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1166467Z               "line": 366
2026-06-21T09:37:52.1166649Z             },
2026-06-21T09:37:52.1166824Z             {
2026-06-21T09:37:52.1167014Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1167274Z               "line": 633
2026-06-21T09:37:52.1167460Z             },
2026-06-21T09:37:52.1167627Z             {
2026-06-21T09:37:52.1167822Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1168061Z               "line": 116
2026-06-21T09:37:52.1168242Z             },
2026-06-21T09:37:52.1168581Z             {
2026-06-21T09:37:52.1168762Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1169071Z               "line": 160
2026-06-21T09:37:52.1169254Z             }
2026-06-21T09:37:52.1169420Z           ]
2026-06-21T09:37:52.1169583Z         }
2026-06-21T09:37:52.1169738Z       }
2026-06-21T09:37:52.1169895Z     },
2026-06-21T09:37:52.1170053Z     {
2026-06-21T09:37:52.1170215Z       "id": "REQ-INST-9",
2026-06-21T09:37:52.1170502Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T09:37:52.1170816Z       "requiredStages": [
2026-06-21T09:37:52.1171007Z         "impl",
2026-06-21T09:37:52.1171283Z         "unit"
2026-06-21T09:37:52.1171456Z       ],
2026-06-21T09:37:52.1171616Z       "stages": {
2026-06-21T09:37:52.1171785Z         "doc": {
2026-06-21T09:37:52.1171969Z           "complete": false,
2026-06-21T09:37:52.1172164Z           "evidence": []
2026-06-21T09:37:52.1172343Z         },
2026-06-21T09:37:52.1172510Z         "impl": {
2026-06-21T09:37:52.1172686Z           "complete": true,
2026-06-21T09:37:52.1172892Z           "evidence": [
2026-06-21T09:37:52.1173073Z             {
2026-06-21T09:37:52.1173272Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1173516Z               "line": 449
2026-06-21T09:37:52.1173707Z             }
2026-06-21T09:37:52.1173869Z           ]
2026-06-21T09:37:52.1174022Z         },
2026-06-21T09:37:52.1174178Z         "int": {
2026-06-21T09:37:52.1174356Z           "complete": false,
2026-06-21T09:37:52.1174555Z           "evidence": []
2026-06-21T09:37:52.1174742Z         },
2026-06-21T09:37:52.1174907Z         "unit": {
2026-06-21T09:37:52.1175074Z           "complete": true,
2026-06-21T09:37:52.1175257Z           "evidence": [
2026-06-21T09:37:52.1175430Z             {
2026-06-21T09:37:52.1175625Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1175863Z               "line": 1397
2026-06-21T09:37:52.1176054Z             },
2026-06-21T09:37:52.1176216Z             {
2026-06-21T09:37:52.1176407Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1176651Z               "line": 1406
2026-06-21T09:37:52.1176831Z             },
2026-06-21T09:37:52.1176994Z             {
2026-06-21T09:37:52.1177185Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1177445Z               "line": 1422
2026-06-21T09:37:52.1177635Z             },
2026-06-21T09:37:52.1177786Z             {
2026-06-21T09:37:52.1177978Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1178212Z               "line": 1434
2026-06-21T09:37:52.1178401Z             },
2026-06-21T09:37:52.1178564Z             {
2026-06-21T09:37:52.1178753Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1179083Z               "line": 1454
2026-06-21T09:37:52.1179269Z             }
2026-06-21T09:37:52.1179437Z           ]
2026-06-21T09:37:52.1179594Z         }
2026-06-21T09:37:52.1179752Z       }
2026-06-21T09:37:52.1179903Z     },
2026-06-21T09:37:52.1180057Z     {
2026-06-21T09:37:52.1180223Z       "id": "REQ-INSTALL-1",
2026-06-21T09:37:52.1180538Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T09:37:52.1180871Z       "requiredStages": [
2026-06-21T09:37:52.1181067Z         "doc",
2026-06-21T09:37:52.1181233Z         "impl",
2026-06-21T09:37:52.1181401Z         "int"
2026-06-21T09:37:52.1181558Z       ],
2026-06-21T09:37:52.1181711Z       "stages": {
2026-06-21T09:37:52.1181882Z         "doc": {
2026-06-21T09:37:52.1182054Z           "complete": true,
2026-06-21T09:37:52.1182257Z           "evidence": [
2026-06-21T09:37:52.1182430Z             {
2026-06-21T09:37:52.1182609Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1182813Z               "line": 754
2026-06-21T09:37:52.1182999Z             }
2026-06-21T09:37:52.1183156Z           ]
2026-06-21T09:37:52.1183304Z         },
2026-06-21T09:37:52.1183570Z         "impl": {
2026-06-21T09:37:52.1183747Z           "complete": true,
2026-06-21T09:37:52.1183934Z           "evidence": [
2026-06-21T09:37:52.1184101Z             {
2026-06-21T09:37:52.1184282Z               "path": "installer/install.ps1",
2026-06-21T09:37:52.1184510Z               "line": 57
2026-06-21T09:37:52.1184696Z             },
2026-06-21T09:37:52.1184844Z             {
2026-06-21T09:37:52.1185025Z               "path": "installer/install.sh",
2026-06-21T09:37:52.1185250Z               "line": 52
2026-06-21T09:37:52.1185429Z             }
2026-06-21T09:37:52.1185577Z           ]
2026-06-21T09:37:52.1185742Z         },
2026-06-21T09:37:52.1185904Z         "int": {
2026-06-21T09:37:52.1186181Z           "complete": true,
2026-06-21T09:37:52.1186375Z           "evidence": [
2026-06-21T09:37:52.1186549Z             {
2026-06-21T09:37:52.1186747Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:37:52.1186987Z               "line": 21
2026-06-21T09:37:52.1187164Z             }
2026-06-21T09:37:52.1187334Z           ]
2026-06-21T09:37:52.1187498Z         },
2026-06-21T09:37:52.1187649Z         "unit": {
2026-06-21T09:37:52.1187822Z           "complete": false,
2026-06-21T09:37:52.1188015Z           "evidence": []
2026-06-21T09:37:52.1188195Z         }
2026-06-21T09:37:52.1188355Z       }
2026-06-21T09:37:52.1188514Z     },
2026-06-21T09:37:52.1188675Z     {
2026-06-21T09:37:52.1188848Z       "id": "REQ-INSTALL-10",
2026-06-21T09:37:52.1190454Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T09:37:52.1191660Z       "requiredStages": [
2026-06-21T09:37:52.1191859Z         "impl",
2026-06-21T09:37:52.1192037Z         "unit"
2026-06-21T09:37:52.1192207Z       ],
2026-06-21T09:37:52.1192361Z       "stages": {
2026-06-21T09:37:52.1192532Z         "doc": {
2026-06-21T09:37:52.1192709Z           "complete": false,
2026-06-21T09:37:52.1192910Z           "evidence": []
2026-06-21T09:37:52.1193084Z         },
2026-06-21T09:37:52.1193237Z         "impl": {
2026-06-21T09:37:52.1193415Z           "complete": true,
2026-06-21T09:37:52.1193602Z           "evidence": [
2026-06-21T09:37:52.1193768Z             {
2026-06-21T09:37:52.1193950Z               "path": "installer/install.ps1",
2026-06-21T09:37:52.1194198Z               "line": 191
2026-06-21T09:37:52.1194369Z             }
2026-06-21T09:37:52.1194542Z           ]
2026-06-21T09:37:52.1194703Z         },
2026-06-21T09:37:52.1194866Z         "int": {
2026-06-21T09:37:52.1195046Z           "complete": false,
2026-06-21T09:37:52.1195247Z           "evidence": []
2026-06-21T09:37:52.1195419Z         },
2026-06-21T09:37:52.1195581Z         "unit": {
2026-06-21T09:37:52.1195767Z           "complete": true,
2026-06-21T09:37:52.1195961Z           "evidence": [
2026-06-21T09:37:52.1196142Z             {
2026-06-21T09:37:52.1196330Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:37:52.1196574Z               "line": 211
2026-06-21T09:37:52.1196750Z             }
2026-06-21T09:37:52.1196908Z           ]
2026-06-21T09:37:52.1197061Z         }
2026-06-21T09:37:52.1197218Z       }
2026-06-21T09:37:52.1197375Z     },
2026-06-21T09:37:52.1197527Z     {
2026-06-21T09:37:52.1197690Z       "id": "REQ-INSTALL-11",
2026-06-21T09:37:52.1199675Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T09:37:52.1201461Z       "requiredStages": [
2026-06-21T09:37:52.1201648Z         "doc",
2026-06-21T09:37:52.1201809Z         "impl",
2026-06-21T09:37:52.1201987Z         "unit"
2026-06-21T09:37:52.1202143Z       ],
2026-06-21T09:37:52.1202301Z       "stages": {
2026-06-21T09:37:52.1202463Z         "doc": {
2026-06-21T09:37:52.1202639Z           "complete": true,
2026-06-21T09:37:52.1202831Z           "evidence": [
2026-06-21T09:37:52.1203002Z             {
2026-06-21T09:37:52.1203283Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1203490Z               "line": 138
2026-06-21T09:37:52.1203659Z             },
2026-06-21T09:37:52.1203821Z             {
2026-06-21T09:37:52.1204047Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.1204267Z               "line": 82
2026-06-21T09:37:52.1204453Z             }
2026-06-21T09:37:52.1204539Z           ]
2026-06-21T09:37:52.1204619Z         },
2026-06-21T09:37:52.1204710Z         "impl": {
2026-06-21T09:37:52.1204806Z           "complete": true,
2026-06-21T09:37:52.1204896Z           "evidence": [
2026-06-21T09:37:52.1204967Z             {
2026-06-21T09:37:52.1205088Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.1205178Z               "line": 223
2026-06-21T09:37:52.1205259Z             },
2026-06-21T09:37:52.1205340Z             {
2026-06-21T09:37:52.1205469Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1205554Z               "line": 99
2026-06-21T09:37:52.1205639Z             },
2026-06-21T09:37:52.1205713Z             {
2026-06-21T09:37:52.1205836Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1205917Z               "line": 117
2026-06-21T09:37:52.1205998Z             },
2026-06-21T09:37:52.1206084Z             {
2026-06-21T09:37:52.1206202Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T09:37:52.1206289Z               "line": 332
2026-06-21T09:37:52.1206366Z             },
2026-06-21T09:37:52.1206456Z             {
2026-06-21T09:37:52.1206573Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.1206664Z               "line": 88
2026-06-21T09:37:52.1206754Z             },
2026-06-21T09:37:52.1206838Z             {
2026-06-21T09:37:52.1206947Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.1207029Z               "line": 104
2026-06-21T09:37:52.1207120Z             },
2026-06-21T09:37:52.1207205Z             {
2026-06-21T09:37:52.1207311Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1207415Z               "line": 297
2026-06-21T09:37:52.1207491Z             },
2026-06-21T09:37:52.1207582Z             {
2026-06-21T09:37:52.1207688Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1207783Z               "line": 332
2026-06-21T09:37:52.1207882Z             },
2026-06-21T09:37:52.1207959Z             {
2026-06-21T09:37:52.1208087Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1208168Z               "line": 523
2026-06-21T09:37:52.1208250Z             },
2026-06-21T09:37:52.1208336Z             {
2026-06-21T09:37:52.1208455Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1208536Z               "line": 546
2026-06-21T09:37:52.1208622Z             },
2026-06-21T09:37:52.1208712Z             {
2026-06-21T09:37:52.1208812Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1208909Z               "line": 561
2026-06-21T09:37:52.1209059Z             },
2026-06-21T09:37:52.1209154Z             {
2026-06-21T09:37:52.1209274Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.1209358Z               "line": 492
2026-06-21T09:37:52.1209443Z             }
2026-06-21T09:37:52.1209524Z           ]
2026-06-21T09:37:52.1209606Z         },
2026-06-21T09:37:52.1210030Z         "int": {
2026-06-21T09:37:52.1210129Z           "complete": false,
2026-06-21T09:37:52.1210216Z           "evidence": []
2026-06-21T09:37:52.1210301Z         },
2026-06-21T09:37:52.1210382Z         "unit": {
2026-06-21T09:37:52.1210473Z           "complete": true,
2026-06-21T09:37:52.1210569Z           "evidence": [
2026-06-21T09:37:52.1210649Z             {
2026-06-21T09:37:52.1210768Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1210851Z               "line": 799
2026-06-21T09:37:52.1210935Z             },
2026-06-21T09:37:52.1211016Z             {
2026-06-21T09:37:52.1211137Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1211327Z               "line": 811
2026-06-21T09:37:52.1211403Z             },
2026-06-21T09:37:52.1211490Z             {
2026-06-21T09:37:52.1211607Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1211684Z               "line": 820
2026-06-21T09:37:52.1211767Z             }
2026-06-21T09:37:52.1211848Z           ]
2026-06-21T09:37:52.1211931Z         }
2026-06-21T09:37:52.1212012Z       }
2026-06-21T09:37:52.1212098Z     },
2026-06-21T09:37:52.1212184Z     {
2026-06-21T09:37:52.1212279Z       "id": "REQ-INSTALL-12",
2026-06-21T09:37:52.1214874Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T09:37:52.1214999Z       "requiredStages": [
2026-06-21T09:37:52.1215085Z         "doc",
2026-06-21T09:37:52.1215179Z         "impl",
2026-06-21T09:37:52.1215265Z         "unit",
2026-06-21T09:37:52.1215347Z         "int"
2026-06-21T09:37:52.1215437Z       ],
2026-06-21T09:37:52.1215528Z       "stages": {
2026-06-21T09:37:52.1215609Z         "doc": {
2026-06-21T09:37:52.1215695Z           "complete": true,
2026-06-21T09:37:52.1215785Z           "evidence": [
2026-06-21T09:37:52.1215880Z             {
2026-06-21T09:37:52.1215986Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1216081Z               "line": 185
2026-06-21T09:37:52.1216162Z             }
2026-06-21T09:37:52.1216248Z           ]
2026-06-21T09:37:52.1216330Z         },
2026-06-21T09:37:52.1216414Z         "impl": {
2026-06-21T09:37:52.1216510Z           "complete": true,
2026-06-21T09:37:52.1216611Z           "evidence": [
2026-06-21T09:37:52.1216691Z             {
2026-06-21T09:37:52.1216815Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1216912Z               "line": 27
2026-06-21T09:37:52.1216997Z             },
2026-06-21T09:37:52.1217086Z             {
2026-06-21T09:37:52.1217190Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1217276Z               "line": 223
2026-06-21T09:37:52.1217361Z             },
2026-06-21T09:37:52.1217441Z             {
2026-06-21T09:37:52.1217546Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1217633Z               "line": 5677
2026-06-21T09:37:52.1217713Z             }
2026-06-21T09:37:52.1217789Z           ]
2026-06-21T09:37:52.1217876Z         },
2026-06-21T09:37:52.1217962Z         "int": {
2026-06-21T09:37:52.1218047Z           "complete": true,
2026-06-21T09:37:52.1218137Z           "evidence": [
2026-06-21T09:37:52.1218214Z             {
2026-06-21T09:37:52.1218423Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T09:37:52.1218505Z               "line": 19
2026-06-21T09:37:52.1218591Z             }
2026-06-21T09:37:52.1218672Z           ]
2026-06-21T09:37:52.1218757Z         },
2026-06-21T09:37:52.1218839Z         "unit": {
2026-06-21T09:37:52.1218929Z           "complete": true,
2026-06-21T09:37:52.1219091Z           "evidence": [
2026-06-21T09:37:52.1219173Z             {
2026-06-21T09:37:52.1219296Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1219382Z               "line": 395
2026-06-21T09:37:52.1219455Z             },
2026-06-21T09:37:52.1219648Z             {
2026-06-21T09:37:52.1219767Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1219862Z               "line": 421
2026-06-21T09:37:52.1219942Z             },
2026-06-21T09:37:52.1220036Z             {
2026-06-21T09:37:52.1220156Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1220252Z               "line": 440
2026-06-21T09:37:52.1220341Z             },
2026-06-21T09:37:52.1220418Z             {
2026-06-21T09:37:52.1220532Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1220618Z               "line": 475
2026-06-21T09:37:52.1220699Z             },
2026-06-21T09:37:52.1220776Z             {
2026-06-21T09:37:52.1220886Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1220975Z               "line": 8665
2026-06-21T09:37:52.1221058Z             }
2026-06-21T09:37:52.1221143Z           ]
2026-06-21T09:37:52.1221229Z         }
2026-06-21T09:37:52.1221309Z       }
2026-06-21T09:37:52.1221396Z     },
2026-06-21T09:37:52.1221477Z     {
2026-06-21T09:37:52.1221572Z       "id": "REQ-INSTALL-2",
2026-06-21T09:37:52.1221706Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T09:37:52.1221811Z       "requiredStages": [
2026-06-21T09:37:52.1221896Z         "doc"
2026-06-21T09:37:52.1221973Z       ],
2026-06-21T09:37:52.1222069Z       "stages": {
2026-06-21T09:37:52.1222153Z         "doc": {
2026-06-21T09:37:52.1222239Z           "complete": true,
2026-06-21T09:37:52.1222327Z           "evidence": [
2026-06-21T09:37:52.1222413Z             {
2026-06-21T09:37:52.1222505Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1222591Z               "line": 755
2026-06-21T09:37:52.1222672Z             }
2026-06-21T09:37:52.1222754Z           ]
2026-06-21T09:37:52.1222839Z         },
2026-06-21T09:37:52.1222920Z         "impl": {
2026-06-21T09:37:52.1223021Z           "complete": false,
2026-06-21T09:37:52.1223097Z           "evidence": []
2026-06-21T09:37:52.1223187Z         },
2026-06-21T09:37:52.1223278Z         "int": {
2026-06-21T09:37:52.1223360Z           "complete": false,
2026-06-21T09:37:52.1223446Z           "evidence": []
2026-06-21T09:37:52.1223530Z         },
2026-06-21T09:37:52.1223617Z         "unit": {
2026-06-21T09:37:52.1223707Z           "complete": false,
2026-06-21T09:37:52.1223802Z           "evidence": []
2026-06-21T09:37:52.1223897Z         }
2026-06-21T09:37:52.1223980Z       }
2026-06-21T09:37:52.1224060Z     },
2026-06-21T09:37:52.1224141Z     {
2026-06-21T09:37:52.1224237Z       "id": "REQ-INSTALL-3",
2026-06-21T09:37:52.1224370Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T09:37:52.1224470Z       "requiredStages": [
2026-06-21T09:37:52.1224551Z         "impl",
2026-06-21T09:37:52.1224624Z         "int"
2026-06-21T09:37:52.1224708Z       ],
2026-06-21T09:37:52.1224794Z       "stages": {
2026-06-21T09:37:52.1224879Z         "doc": {
2026-06-21T09:37:52.1224965Z           "complete": false,
2026-06-21T09:37:52.1225058Z           "evidence": []
2026-06-21T09:37:52.1225153Z         },
2026-06-21T09:37:52.1225234Z         "impl": {
2026-06-21T09:37:52.1225335Z           "complete": true,
2026-06-21T09:37:52.1225420Z           "evidence": [
2026-06-21T09:37:52.1225511Z             {
2026-06-21T09:37:52.1225636Z               "path": "installer/install.ps1",
2026-06-21T09:37:52.1225840Z               "line": 100
2026-06-21T09:37:52.1225921Z             },
2026-06-21T09:37:52.1226002Z             {
2026-06-21T09:37:52.1226107Z               "path": "installer/install.ps1",
2026-06-21T09:37:52.1226194Z               "line": 111
2026-06-21T09:37:52.1226284Z             },
2026-06-21T09:37:52.1226369Z             {
2026-06-21T09:37:52.1226479Z               "path": "installer/install.sh",
2026-06-21T09:37:52.1226570Z               "line": 79
2026-06-21T09:37:52.1226656Z             }
2026-06-21T09:37:52.1226746Z           ]
2026-06-21T09:37:52.1226828Z         },
2026-06-21T09:37:52.1226913Z         "int": {
2026-06-21T09:37:52.1230553Z           "complete": true,
2026-06-21T09:37:52.1230845Z           "evidence": [
2026-06-21T09:37:52.1230930Z             {
2026-06-21T09:37:52.1231079Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:37:52.1231183Z               "line": 167
2026-06-21T09:37:52.1231269Z             }
2026-06-21T09:37:52.1231356Z           ]
2026-06-21T09:37:52.1231436Z         },
2026-06-21T09:37:52.1231526Z         "unit": {
2026-06-21T09:37:52.1231623Z           "complete": false,
2026-06-21T09:37:52.1231713Z           "evidence": []
2026-06-21T09:37:52.1231794Z         }
2026-06-21T09:37:52.1231869Z       }
2026-06-21T09:37:52.1231961Z     },
2026-06-21T09:37:52.1232037Z     {
2026-06-21T09:37:52.1232137Z       "id": "REQ-INSTALL-4",
2026-06-21T09:37:52.1232756Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T09:37:52.1232862Z       "requiredStages": [
2026-06-21T09:37:52.1232949Z         "impl",
2026-06-21T09:37:52.1233033Z         "unit"
2026-06-21T09:37:52.1233118Z       ],
2026-06-21T09:37:52.1233204Z       "stages": {
2026-06-21T09:37:52.1233295Z         "doc": {
2026-06-21T09:37:52.1233390Z           "complete": false,
2026-06-21T09:37:52.1233485Z           "evidence": []
2026-06-21T09:37:52.1233566Z         },
2026-06-21T09:37:52.1233657Z         "impl": {
2026-06-21T09:37:52.1233752Z           "complete": true,
2026-06-21T09:37:52.1233838Z           "evidence": [
2026-06-21T09:37:52.1233925Z             {
2026-06-21T09:37:52.1234081Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.1234158Z               "line": 165
2026-06-21T09:37:52.1234240Z             },
2026-06-21T09:37:52.1234324Z             {
2026-06-21T09:37:52.1234453Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1234535Z               "line": 29
2026-06-21T09:37:52.1234629Z             },
2026-06-21T09:37:52.1234720Z             {
2026-06-21T09:37:52.1234826Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1234926Z               "line": 288
2026-06-21T09:37:52.1235011Z             },
2026-06-21T09:37:52.1235092Z             {
2026-06-21T09:37:52.1235217Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1235306Z               "line": 356
2026-06-21T09:37:52.1235391Z             },
2026-06-21T09:37:52.1235468Z             {
2026-06-21T09:37:52.1235586Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1235675Z               "line": 386
2026-06-21T09:37:52.1235761Z             },
2026-06-21T09:37:52.1235852Z             {
2026-06-21T09:37:52.1235966Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1236061Z               "line": 434
2026-06-21T09:37:52.1236148Z             },
2026-06-21T09:37:52.1236234Z             {
2026-06-21T09:37:52.1236338Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1236439Z               "line": 5396
2026-06-21T09:37:52.1236519Z             }
2026-06-21T09:37:52.1236600Z           ]
2026-06-21T09:37:52.1236690Z         },
2026-06-21T09:37:52.1236773Z         "int": {
2026-06-21T09:37:52.1236868Z           "complete": false,
2026-06-21T09:37:52.1237063Z           "evidence": []
2026-06-21T09:37:52.1237149Z         },
2026-06-21T09:37:52.1237239Z         "unit": {
2026-06-21T09:37:52.1237325Z           "complete": true,
2026-06-21T09:37:52.1237412Z           "evidence": [
2026-06-21T09:37:52.1237492Z             {
2026-06-21T09:37:52.1237625Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.1237703Z               "line": 375
2026-06-21T09:37:52.1237788Z             },
2026-06-21T09:37:52.1237878Z             {
2026-06-21T09:37:52.1237984Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1238075Z               "line": 808
2026-06-21T09:37:52.1238244Z             },
2026-06-21T09:37:52.1238335Z             {
2026-06-21T09:37:52.1238448Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1238543Z               "line": 849
2026-06-21T09:37:52.1238628Z             },
2026-06-21T09:37:52.1238710Z             {
2026-06-21T09:37:52.1238824Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1238914Z               "line": 869
2026-06-21T09:37:52.1239077Z             },
2026-06-21T09:37:52.1239162Z             {
2026-06-21T09:37:52.1239277Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1239373Z               "line": 8403
2026-06-21T09:37:52.1239454Z             }
2026-06-21T09:37:52.1239539Z           ]
2026-06-21T09:37:52.1239620Z         }
2026-06-21T09:37:52.1239702Z       }
2026-06-21T09:37:52.1239787Z     },
2026-06-21T09:37:52.1239877Z     {
2026-06-21T09:37:52.1239974Z       "id": "REQ-INSTALL-5",
2026-06-21T09:37:52.1240440Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T09:37:52.1240541Z       "requiredStages": [
2026-06-21T09:37:52.1240623Z         "impl",
2026-06-21T09:37:52.1240707Z         "int"
2026-06-21T09:37:52.1240792Z       ],
2026-06-21T09:37:52.1240877Z       "stages": {
2026-06-21T09:37:52.1240963Z         "doc": {
2026-06-21T09:37:52.1241043Z           "complete": false,
2026-06-21T09:37:52.1241132Z           "evidence": []
2026-06-21T09:37:52.1241214Z         },
2026-06-21T09:37:52.1241296Z         "impl": {
2026-06-21T09:37:52.1241381Z           "complete": true,
2026-06-21T09:37:52.1241471Z           "evidence": [
2026-06-21T09:37:52.1241558Z             {
2026-06-21T09:37:52.1241663Z               "path": "installer/install.ps1",
2026-06-21T09:37:52.1241758Z               "line": 5
2026-06-21T09:37:52.1241839Z             },
2026-06-21T09:37:52.1241920Z             {
2026-06-21T09:37:52.1242030Z               "path": "installer/install.sh",
2026-06-21T09:37:52.1242114Z               "line": 6
2026-06-21T09:37:52.1242202Z             }
2026-06-21T09:37:52.1242283Z           ]
2026-06-21T09:37:52.1242368Z         },
2026-06-21T09:37:52.1242449Z         "int": {
2026-06-21T09:37:52.1242545Z           "complete": true,
2026-06-21T09:37:52.1242644Z           "evidence": [
2026-06-21T09:37:52.1242726Z             {
2026-06-21T09:37:52.1242851Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T09:37:52.1242935Z               "line": 22
2026-06-21T09:37:52.1243026Z             }
2026-06-21T09:37:52.1243108Z           ]
2026-06-21T09:37:52.1243194Z         },
2026-06-21T09:37:52.1243283Z         "unit": {
2026-06-21T09:37:52.1243369Z           "complete": false,
2026-06-21T09:37:52.1243456Z           "evidence": []
2026-06-21T09:37:52.1243542Z         }
2026-06-21T09:37:52.1243631Z       }
2026-06-21T09:37:52.1243711Z     },
2026-06-21T09:37:52.1243802Z     {
2026-06-21T09:37:52.1243894Z       "id": "REQ-INSTALL-6",
2026-06-21T09:37:52.1245143Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T09:37:52.1245357Z       "requiredStages": [
2026-06-21T09:37:52.1245439Z         "impl",
2026-06-21T09:37:52.1245519Z         "unit"
2026-06-21T09:37:52.1245600Z       ],
2026-06-21T09:37:52.1245681Z       "stages": {
2026-06-21T09:37:52.1245773Z         "doc": {
2026-06-21T09:37:52.1245857Z           "complete": false,
2026-06-21T09:37:52.1245942Z           "evidence": []
2026-06-21T09:37:52.1246028Z         },
2026-06-21T09:37:52.1246114Z         "impl": {
2026-06-21T09:37:52.1246211Z           "complete": true,
2026-06-21T09:37:52.1246297Z           "evidence": [
2026-06-21T09:37:52.1246480Z             {
2026-06-21T09:37:52.1246607Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.1246698Z               "line": 61
2026-06-21T09:37:52.1246784Z             },
2026-06-21T09:37:52.1246874Z             {
2026-06-21T09:37:52.1246999Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.1247094Z               "line": 641
2026-06-21T09:37:52.1247188Z             },
2026-06-21T09:37:52.1247270Z             {
2026-06-21T09:37:52.1247399Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.1247480Z               "line": 191
2026-06-21T09:37:52.1247570Z             },
2026-06-21T09:37:52.1247652Z             {
2026-06-21T09:37:52.1247771Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.1247866Z               "line": 276
2026-06-21T09:37:52.1247943Z             },
2026-06-21T09:37:52.1248029Z             {
2026-06-21T09:37:52.1248138Z               "path": "crates/spt/src/main.rs",
2026-06-21T09:37:52.1248239Z               "line": 43
2026-06-21T09:37:52.1248325Z             },
2026-06-21T09:37:52.1248409Z             {
2026-06-21T09:37:52.1248525Z               "path": "installer/install.sh",
2026-06-21T09:37:52.1248602Z               "line": 104
2026-06-21T09:37:52.1248687Z             }
2026-06-21T09:37:52.1248771Z           ]
2026-06-21T09:37:52.1248861Z         },
2026-06-21T09:37:52.1249032Z         "int": {
2026-06-21T09:37:52.1249121Z           "complete": false,
2026-06-21T09:37:52.1249217Z           "evidence": []
2026-06-21T09:37:52.1249299Z         },
2026-06-21T09:37:52.1249374Z         "unit": {
2026-06-21T09:37:52.1249469Z           "complete": true,
2026-06-21T09:37:52.1249561Z           "evidence": [
2026-06-21T09:37:52.1249637Z             {
2026-06-21T09:37:52.1249755Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T09:37:52.1249837Z               "line": 894
2026-06-21T09:37:52.1249923Z             }
2026-06-21T09:37:52.1250009Z           ]
2026-06-21T09:37:52.1250089Z         }
2026-06-21T09:37:52.1250166Z       }
2026-06-21T09:37:52.1250243Z     },
2026-06-21T09:37:52.1250323Z     {
2026-06-21T09:37:52.1250419Z       "id": "REQ-INSTALL-7",
2026-06-21T09:37:52.1251510Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T09:37:52.1251617Z       "requiredStages": [
2026-06-21T09:37:52.1251697Z         "impl"
2026-06-21T09:37:52.1251784Z       ],
2026-06-21T09:37:52.1251880Z       "stages": {
2026-06-21T09:37:52.1251965Z         "doc": {
2026-06-21T09:37:52.1252055Z           "complete": false,
2026-06-21T09:37:52.1252147Z           "evidence": []
2026-06-21T09:37:52.1252228Z         },
2026-06-21T09:37:52.1252327Z         "impl": {
2026-06-21T09:37:52.1252418Z           "complete": true,
2026-06-21T09:37:52.1252514Z           "evidence": [
2026-06-21T09:37:52.1252594Z             {
2026-06-21T09:37:52.1252699Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1252790Z               "line": 3920
2026-06-21T09:37:52.1252985Z             },
2026-06-21T09:37:52.1253067Z             {
2026-06-21T09:37:52.1253167Z               "path": "installer/install.ps1",
2026-06-21T09:37:52.1253262Z               "line": 157
2026-06-21T09:37:52.1253348Z             }
2026-06-21T09:37:52.1253434Z           ]
2026-06-21T09:37:52.1253519Z         },
2026-06-21T09:37:52.1253605Z         "int": {
2026-06-21T09:37:52.1253697Z           "complete": false,
2026-06-21T09:37:52.1253782Z           "evidence": []
2026-06-21T09:37:52.1253867Z         },
2026-06-21T09:37:52.1253953Z         "unit": {
2026-06-21T09:37:52.1254050Z           "complete": false,
2026-06-21T09:37:52.1254130Z           "evidence": []
2026-06-21T09:37:52.1254305Z         }
2026-06-21T09:37:52.1254386Z       }
2026-06-21T09:37:52.1254468Z     },
2026-06-21T09:37:52.1254557Z     {
2026-06-21T09:37:52.1254648Z       "id": "REQ-INSTALL-8",
2026-06-21T09:37:52.1255670Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T09:37:52.1255783Z       "requiredStages": [
2026-06-21T09:37:52.1255878Z         "impl"
2026-06-21T09:37:52.1255966Z       ],
2026-06-21T09:37:52.1256051Z       "stages": {
2026-06-21T09:37:52.1256136Z         "doc": {
2026-06-21T09:37:52.1256232Z           "complete": false,
2026-06-21T09:37:52.1256323Z           "evidence": []
2026-06-21T09:37:52.1256408Z         },
2026-06-21T09:37:52.1256493Z         "impl": {
2026-06-21T09:37:52.1256579Z           "complete": true,
2026-06-21T09:37:52.1256669Z           "evidence": [
2026-06-21T09:37:52.1256758Z             {
2026-06-21T09:37:52.1256857Z               "path": "installer/install.ps1",
2026-06-21T09:37:52.1256948Z               "line": 184
2026-06-21T09:37:52.1257035Z             },
2026-06-21T09:37:52.1257114Z             {
2026-06-21T09:37:52.1257225Z               "path": "installer/install.sh",
2026-06-21T09:37:52.1257302Z               "line": 121
2026-06-21T09:37:52.1257392Z             }
2026-06-21T09:37:52.1257477Z           ]
2026-06-21T09:37:52.1257559Z         },
2026-06-21T09:37:52.1257645Z         "int": {
2026-06-21T09:37:52.1257735Z           "complete": false,
2026-06-21T09:37:52.1257821Z           "evidence": []
2026-06-21T09:37:52.1257893Z         },
2026-06-21T09:37:52.1257983Z         "unit": {
2026-06-21T09:37:52.1258064Z           "complete": false,
2026-06-21T09:37:52.1258159Z           "evidence": []
2026-06-21T09:37:52.1258256Z         }
2026-06-21T09:37:52.1258336Z       }
2026-06-21T09:37:52.1258421Z     },
2026-06-21T09:37:52.1258508Z     {
2026-06-21T09:37:52.1258608Z       "id": "REQ-INSTALL-9",
2026-06-21T09:37:52.1259887Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T09:37:52.1259986Z       "requiredStages": [
2026-06-21T09:37:52.1260077Z         "doc",
2026-06-21T09:37:52.1260160Z         "impl",
2026-06-21T09:37:52.1260250Z         "unit"
2026-06-21T09:37:52.1260330Z       ],
2026-06-21T09:37:52.1260417Z       "stages": {
2026-06-21T09:37:52.1260502Z         "doc": {
2026-06-21T09:37:52.1260593Z           "complete": true,
2026-06-21T09:37:52.1260688Z           "evidence": [
2026-06-21T09:37:52.1260760Z             {
2026-06-21T09:37:52.1260859Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1260940Z               "line": 771
2026-06-21T09:37:52.1261031Z             }
2026-06-21T09:37:52.1261118Z           ]
2026-06-21T09:37:52.1261322Z         },
2026-06-21T09:37:52.1261404Z         "impl": {
2026-06-21T09:37:52.1261498Z           "complete": true,
2026-06-21T09:37:52.1261575Z           "evidence": [
2026-06-21T09:37:52.1261661Z             {
2026-06-21T09:37:52.1261771Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1261855Z               "line": 2535
2026-06-21T09:37:52.1261941Z             },
2026-06-21T09:37:52.1262031Z             {
2026-06-21T09:37:52.1262126Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1262220Z               "line": 2559
2026-06-21T09:37:52.1262300Z             }
2026-06-21T09:37:52.1262387Z           ]
2026-06-21T09:37:52.1262587Z         },
2026-06-21T09:37:52.1262673Z         "int": {
2026-06-21T09:37:52.1262769Z           "complete": false,
2026-06-21T09:37:52.1262858Z           "evidence": []
2026-06-21T09:37:52.1262949Z         },
2026-06-21T09:37:52.1263031Z         "unit": {
2026-06-21T09:37:52.1263122Z           "complete": true,
2026-06-21T09:37:52.1263211Z           "evidence": [
2026-06-21T09:37:52.1263298Z             {
2026-06-21T09:37:52.1263403Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1263484Z               "line": 7591
2026-06-21T09:37:52.1263564Z             },
2026-06-21T09:37:52.1263647Z             {
2026-06-21T09:37:52.1263750Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1263836Z               "line": 8433
2026-06-21T09:37:52.1263923Z             }
2026-06-21T09:37:52.1264009Z           ]
2026-06-21T09:37:52.1264089Z         }
2026-06-21T09:37:52.1264170Z       }
2026-06-21T09:37:52.1264257Z     },
2026-06-21T09:37:52.1264342Z     {
2026-06-21T09:37:52.1264451Z       "id": "REQ-KICK-1",
2026-06-21T09:37:52.1266973Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T09:37:52.1267077Z       "requiredStages": [
2026-06-21T09:37:52.1267153Z         "doc",
2026-06-21T09:37:52.1267252Z         "impl",
2026-06-21T09:37:52.1267337Z         "unit",
2026-06-21T09:37:52.1267422Z         "int"
2026-06-21T09:37:52.1267508Z       ],
2026-06-21T09:37:52.1267591Z       "stages": {
2026-06-21T09:37:52.1267684Z         "doc": {
2026-06-21T09:37:52.1267780Z           "complete": true,
2026-06-21T09:37:52.1267872Z           "evidence": [
2026-06-21T09:37:52.1267952Z             {
2026-06-21T09:37:52.1268047Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1268129Z               "line": 342
2026-06-21T09:37:52.1268214Z             }
2026-06-21T09:37:52.1268300Z           ]
2026-06-21T09:37:52.1268386Z         },
2026-06-21T09:37:52.1268472Z         "impl": {
2026-06-21T09:37:52.1268572Z           "complete": true,
2026-06-21T09:37:52.1268657Z           "evidence": [
2026-06-21T09:37:52.1268739Z             {
2026-06-21T09:37:52.1268863Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1269030Z               "line": 41
2026-06-21T09:37:52.1269121Z             },
2026-06-21T09:37:52.1269201Z             {
2026-06-21T09:37:52.1269305Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1269393Z               "line": 701
2026-06-21T09:37:52.1269474Z             }
2026-06-21T09:37:52.1269553Z           ]
2026-06-21T09:37:52.1269640Z         },
2026-06-21T09:37:52.1269826Z         "int": {
2026-06-21T09:37:52.1269920Z           "complete": true,
2026-06-21T09:37:52.1270001Z           "evidence": [
2026-06-21T09:37:52.1270077Z             {
2026-06-21T09:37:52.1270204Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1270294Z               "line": 913
2026-06-21T09:37:52.1270371Z             }
2026-06-21T09:37:52.1270452Z           ]
2026-06-21T09:37:52.1270533Z         },
2026-06-21T09:37:52.1270618Z         "unit": {
2026-06-21T09:37:52.1270701Z           "complete": true,
2026-06-21T09:37:52.1270801Z           "evidence": [
2026-06-21T09:37:52.1270880Z             {
2026-06-21T09:37:52.1270986Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1271176Z               "line": 205
2026-06-21T09:37:52.1271257Z             }
2026-06-21T09:37:52.1271339Z           ]
2026-06-21T09:37:52.1271420Z         }
2026-06-21T09:37:52.1271505Z       }
2026-06-21T09:37:52.1271591Z     },
2026-06-21T09:37:52.1271669Z     {
2026-06-21T09:37:52.1271772Z       "id": "REQ-MANIFEST-1",
2026-06-21T09:37:52.1271955Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T09:37:52.1272059Z       "requiredStages": [
2026-06-21T09:37:52.1272144Z         "doc",
2026-06-21T09:37:52.1272226Z         "impl",
2026-06-21T09:37:52.1272303Z         "unit"
2026-06-21T09:37:52.1272392Z       ],
2026-06-21T09:37:52.1272482Z       "stages": {
2026-06-21T09:37:52.1272573Z         "doc": {
2026-06-21T09:37:52.1272672Z           "complete": true,
2026-06-21T09:37:52.1272751Z           "evidence": [
2026-06-21T09:37:52.1272841Z             {
2026-06-21T09:37:52.1272938Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.1273029Z               "line": 19
2026-06-21T09:37:52.1273109Z             }
2026-06-21T09:37:52.1273190Z           ]
2026-06-21T09:37:52.1273282Z         },
2026-06-21T09:37:52.1273367Z         "impl": {
2026-06-21T09:37:52.1273462Z           "complete": true,
2026-06-21T09:37:52.1273543Z           "evidence": [
2026-06-21T09:37:52.1273634Z             {
2026-06-21T09:37:52.1273762Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1273849Z               "line": 18
2026-06-21T09:37:52.1273935Z             }
2026-06-21T09:37:52.1274015Z           ]
2026-06-21T09:37:52.1274106Z         },
2026-06-21T09:37:52.1274187Z         "int": {
2026-06-21T09:37:52.1274282Z           "complete": false,
2026-06-21T09:37:52.1274377Z           "evidence": []
2026-06-21T09:37:52.1274453Z         },
2026-06-21T09:37:52.1274541Z         "unit": {
2026-06-21T09:37:52.1274635Z           "complete": true,
2026-06-21T09:37:52.1274716Z           "evidence": [
2026-06-21T09:37:52.1274812Z             {
2026-06-21T09:37:52.1274930Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1275021Z               "line": 1029
2026-06-21T09:37:52.1275113Z             },
2026-06-21T09:37:52.1275199Z             {
2026-06-21T09:37:52.1275306Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1275396Z               "line": 1325
2026-06-21T09:37:52.1275483Z             },
2026-06-21T09:37:52.1275574Z             {
2026-06-21T09:37:52.1275697Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1275778Z               "line": 1337
2026-06-21T09:37:52.1275865Z             },
2026-06-21T09:37:52.1275955Z             {
2026-06-21T09:37:52.1276074Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1276170Z               "line": 1348
2026-06-21T09:37:52.1276256Z             },
2026-06-21T09:37:52.1276341Z             {
2026-06-21T09:37:52.1276461Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1276565Z               "line": 1365
2026-06-21T09:37:52.1276646Z             },
2026-06-21T09:37:52.1276728Z             {
2026-06-21T09:37:52.1276847Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1276928Z               "line": 1379
2026-06-21T09:37:52.1277096Z             },
2026-06-21T09:37:52.1277185Z             {
2026-06-21T09:37:52.1277299Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1277391Z               "line": 1495
2026-06-21T09:37:52.1277471Z             },
2026-06-21T09:37:52.1277552Z             {
2026-06-21T09:37:52.1277665Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1277756Z               "line": 1510
2026-06-21T09:37:52.1277836Z             },
2026-06-21T09:37:52.1277920Z             {
2026-06-21T09:37:52.1278026Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1278112Z               "line": 1621
2026-06-21T09:37:52.1278258Z             },
2026-06-21T09:37:52.1278340Z             {
2026-06-21T09:37:52.1278460Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1278545Z               "line": 1632
2026-06-21T09:37:52.1278636Z             }
2026-06-21T09:37:52.1278718Z           ]
2026-06-21T09:37:52.1278822Z         }
2026-06-21T09:37:52.1278902Z       }
2026-06-21T09:37:52.1279099Z     },
2026-06-21T09:37:52.1279189Z     {
2026-06-21T09:37:52.1279280Z       "id": "REQ-MANIFEST-2",
2026-06-21T09:37:52.1279780Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T09:37:52.1279875Z       "requiredStages": [
2026-06-21T09:37:52.1279963Z         "doc",
2026-06-21T09:37:52.1280062Z         "impl",
2026-06-21T09:37:52.1280138Z         "unit"
2026-06-21T09:37:52.1280225Z       ],
2026-06-21T09:37:52.1280311Z       "stages": {
2026-06-21T09:37:52.1280395Z         "doc": {
2026-06-21T09:37:52.1280494Z           "complete": true,
2026-06-21T09:37:52.1280575Z           "evidence": [
2026-06-21T09:37:52.1280652Z             {
2026-06-21T09:37:52.1280750Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1280845Z               "line": 75
2026-06-21T09:37:52.1280926Z             }
2026-06-21T09:37:52.1281012Z           ]
2026-06-21T09:37:52.1281093Z         },
2026-06-21T09:37:52.1281174Z         "impl": {
2026-06-21T09:37:52.1281270Z           "complete": true,
2026-06-21T09:37:52.1281351Z           "evidence": [
2026-06-21T09:37:52.1281436Z             {
2026-06-21T09:37:52.1281552Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1281647Z               "line": 82
2026-06-21T09:37:52.1281727Z             },
2026-06-21T09:37:52.1281808Z             {
2026-06-21T09:37:52.1281938Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1282018Z               "line": 15
2026-06-21T09:37:52.1282108Z             },
2026-06-21T09:37:52.1282195Z             {
2026-06-21T09:37:52.1282314Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1282399Z               "line": 65
2026-06-21T09:37:52.1282481Z             },
2026-06-21T09:37:52.1282563Z             {
2026-06-21T09:37:52.1282670Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1282777Z               "line": 83
2026-06-21T09:37:52.1282858Z             },
2026-06-21T09:37:52.1282948Z             {
2026-06-21T09:37:52.1283071Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1283161Z               "line": 183
2026-06-21T09:37:52.1283256Z             },
2026-06-21T09:37:52.1283340Z             {
2026-06-21T09:37:52.1283465Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1283546Z               "line": 527
2026-06-21T09:37:52.1283636Z             },
2026-06-21T09:37:52.1283721Z             {
2026-06-21T09:37:52.1283837Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1283932Z               "line": 553
2026-06-21T09:37:52.1284017Z             },
2026-06-21T09:37:52.1284104Z             {
2026-06-21T09:37:52.1284227Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1284307Z               "line": 671
2026-06-21T09:37:52.1284514Z             },
2026-06-21T09:37:52.1284590Z             {
2026-06-21T09:37:52.1284704Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1284801Z               "line": 696
2026-06-21T09:37:52.1284880Z             },
2026-06-21T09:37:52.1284956Z             {
2026-06-21T09:37:52.1285077Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1285176Z               "line": 719
2026-06-21T09:37:52.1285262Z             },
2026-06-21T09:37:52.1285343Z             {
2026-06-21T09:37:52.1285458Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1285552Z               "line": 734
2026-06-21T09:37:52.1285730Z             },
2026-06-21T09:37:52.1285815Z             {
2026-06-21T09:37:52.1285924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1286010Z               "line": 5567
2026-06-21T09:37:52.1286091Z             },
2026-06-21T09:37:52.1286176Z             {
2026-06-21T09:37:52.1286285Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1286377Z               "line": 5581
2026-06-21T09:37:52.1286463Z             },
2026-06-21T09:37:52.1286548Z             {
2026-06-21T09:37:52.1286654Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1286744Z               "line": 5615
2026-06-21T09:37:52.1286820Z             }
2026-06-21T09:37:52.1286906Z           ]
2026-06-21T09:37:52.1286987Z         },
2026-06-21T09:37:52.1287078Z         "int": {
2026-06-21T09:37:52.1287177Z           "complete": false,
2026-06-21T09:37:52.1287263Z           "evidence": []
2026-06-21T09:37:52.1287351Z         },
2026-06-21T09:37:52.1287435Z         "unit": {
2026-06-21T09:37:52.1287545Z           "complete": true,
2026-06-21T09:37:52.1287627Z           "evidence": [
2026-06-21T09:37:52.1287712Z             {
2026-06-21T09:37:52.1287840Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1287922Z               "line": 921
2026-06-21T09:37:52.1288018Z             },
2026-06-21T09:37:52.1288093Z             {
2026-06-21T09:37:52.1288206Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1288297Z               "line": 211
2026-06-21T09:37:52.1288368Z             },
2026-06-21T09:37:52.1288448Z             {
2026-06-21T09:37:52.1288566Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1288663Z               "line": 272
2026-06-21T09:37:52.1288743Z             },
2026-06-21T09:37:52.1288833Z             {
2026-06-21T09:37:52.1289030Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1289124Z               "line": 313
2026-06-21T09:37:52.1289215Z             },
2026-06-21T09:37:52.1289297Z             {
2026-06-21T09:37:52.1289415Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1289496Z               "line": 325
2026-06-21T09:37:52.1289583Z             },
2026-06-21T09:37:52.1289669Z             {
2026-06-21T09:37:52.1289782Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1289874Z               "line": 336
2026-06-21T09:37:52.1289954Z             },
2026-06-21T09:37:52.1290040Z             {
2026-06-21T09:37:52.1290155Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1290246Z               "line": 345
2026-06-21T09:37:52.1290340Z             },
2026-06-21T09:37:52.1290421Z             {
2026-06-21T09:37:52.1290547Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1290631Z               "line": 361
2026-06-21T09:37:52.1290727Z             },
2026-06-21T09:37:52.1290813Z             {
2026-06-21T09:37:52.1290923Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1291026Z               "line": 444
2026-06-21T09:37:52.1291107Z             },
2026-06-21T09:37:52.1291197Z             {
2026-06-21T09:37:52.1291315Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1291409Z               "line": 958
2026-06-21T09:37:52.1291496Z             },
2026-06-21T09:37:52.1291710Z             {
2026-06-21T09:37:52.1291835Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1291926Z               "line": 982
2026-06-21T09:37:52.1292015Z             },
2026-06-21T09:37:52.1292087Z             {
2026-06-21T09:37:52.1292212Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1292292Z               "line": 1008
2026-06-21T09:37:52.1292383Z             },
2026-06-21T09:37:52.1292469Z             {
2026-06-21T09:37:52.1292588Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1292688Z               "line": 1027
2026-06-21T09:37:52.1292869Z             },
2026-06-21T09:37:52.1292955Z             {
2026-06-21T09:37:52.1293075Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1293165Z               "line": 1058
2026-06-21T09:37:52.1293255Z             },
2026-06-21T09:37:52.1293332Z             {
2026-06-21T09:37:52.1293456Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.1293550Z               "line": 309
2026-06-21T09:37:52.1293631Z             },
2026-06-21T09:37:52.1293717Z             {
2026-06-21T09:37:52.1293821Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.1293914Z               "line": 606
2026-06-21T09:37:52.1294000Z             },
2026-06-21T09:37:52.1294087Z             {
2026-06-21T09:37:52.1294182Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1294272Z               "line": 8610
2026-06-21T09:37:52.1294358Z             },
2026-06-21T09:37:52.1294430Z             {
2026-06-21T09:37:52.1294525Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1294616Z               "line": 9558
2026-06-21T09:37:52.1294697Z             }
2026-06-21T09:37:52.1294787Z           ]
2026-06-21T09:37:52.1294873Z         }
2026-06-21T09:37:52.1294959Z       }
2026-06-21T09:37:52.1295041Z     },
2026-06-21T09:37:52.1295125Z     {
2026-06-21T09:37:52.1295216Z       "id": "REQ-MANIFEST-3",
2026-06-21T09:37:52.1295855Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T09:37:52.1295956Z       "requiredStages": [
2026-06-21T09:37:52.1296047Z         "doc",
2026-06-21T09:37:52.1296132Z         "impl",
2026-06-21T09:37:52.1296214Z         "unit"
2026-06-21T09:37:52.1296305Z       ],
2026-06-21T09:37:52.1296390Z       "stages": {
2026-06-21T09:37:52.1296474Z         "doc": {
2026-06-21T09:37:52.1296574Z           "complete": true,
2026-06-21T09:37:52.1296656Z           "evidence": [
2026-06-21T09:37:52.1296755Z             {
2026-06-21T09:37:52.1296850Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1296937Z               "line": 81
2026-06-21T09:37:52.1297018Z             }
2026-06-21T09:37:52.1297108Z           ]
2026-06-21T09:37:52.1297199Z         },
2026-06-21T09:37:52.1297290Z         "impl": {
2026-06-21T09:37:52.1297390Z           "complete": true,
2026-06-21T09:37:52.1297475Z           "evidence": [
2026-06-21T09:37:52.1297572Z             {
2026-06-21T09:37:52.1297695Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1297780Z               "line": 92
2026-06-21T09:37:52.1297862Z             },
2026-06-21T09:37:52.1297944Z             {
2026-06-21T09:37:52.1298071Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1298158Z               "line": 101
2026-06-21T09:37:52.1298245Z             },
2026-06-21T09:37:52.1298328Z             {
2026-06-21T09:37:52.1298453Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1298550Z               "line": 132
2026-06-21T09:37:52.1298624Z             },
2026-06-21T09:37:52.1298710Z             {
2026-06-21T09:37:52.1298828Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1298923Z               "line": 577
2026-06-21T09:37:52.1299199Z             },
2026-06-21T09:37:52.1299285Z             {
2026-06-21T09:37:52.1299407Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1299499Z               "line": 633
2026-06-21T09:37:52.1299580Z             },
2026-06-21T09:37:52.1299660Z             {
2026-06-21T09:37:52.1299771Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1299862Z               "line": 5628
2026-06-21T09:37:52.1299937Z             },
2026-06-21T09:37:52.1300018Z             {
2026-06-21T09:37:52.1300124Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1300224Z               "line": 5654
2026-06-21T09:37:52.1300304Z             }
2026-06-21T09:37:52.1300496Z           ]
2026-06-21T09:37:52.1300577Z         },
2026-06-21T09:37:52.1300662Z         "int": {
2026-06-21T09:37:52.1303277Z           "complete": false,
2026-06-21T09:37:52.1303396Z           "evidence": []
2026-06-21T09:37:52.1303486Z         },
2026-06-21T09:37:52.1303567Z         "unit": {
2026-06-21T09:37:52.1303673Z           "complete": true,
2026-06-21T09:37:52.1303763Z           "evidence": [
2026-06-21T09:37:52.1303849Z             {
2026-06-21T09:37:52.1303979Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1304073Z               "line": 371
2026-06-21T09:37:52.1304162Z             },
2026-06-21T09:37:52.1304248Z             {
2026-06-21T09:37:52.1304376Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1304465Z               "line": 429
2026-06-21T09:37:52.1304551Z             },
2026-06-21T09:37:52.1304632Z             {
2026-06-21T09:37:52.1304761Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1304870Z               "line": 1082
2026-06-21T09:37:52.1304948Z             },
2026-06-21T09:37:52.1305033Z             {
2026-06-21T09:37:52.1305142Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1305239Z               "line": 8703
2026-06-21T09:37:52.1305329Z             }
2026-06-21T09:37:52.1305419Z           ]
2026-06-21T09:37:52.1305500Z         }
2026-06-21T09:37:52.1305582Z       }
2026-06-21T09:37:52.1305658Z     },
2026-06-21T09:37:52.1305743Z     {
2026-06-21T09:37:52.1305838Z       "id": "REQ-MANIFEST-4",
2026-06-21T09:37:52.1306550Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T09:37:52.1306654Z       "requiredStages": [
2026-06-21T09:37:52.1306744Z         "doc",
2026-06-21T09:37:52.1306832Z         "impl",
2026-06-21T09:37:52.1306922Z         "unit"
2026-06-21T09:37:52.1307010Z       ],
2026-06-21T09:37:52.1307101Z       "stages": {
2026-06-21T09:37:52.1307187Z         "doc": {
2026-06-21T09:37:52.1307279Z           "complete": true,
2026-06-21T09:37:52.1307372Z           "evidence": [
2026-06-21T09:37:52.1307449Z             {
2026-06-21T09:37:52.1307545Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1307631Z               "line": 88
2026-06-21T09:37:52.1307716Z             }
2026-06-21T09:37:52.1307808Z           ]
2026-06-21T09:37:52.1307883Z         },
2026-06-21T09:37:52.1307969Z         "impl": {
2026-06-21T09:37:52.1308059Z           "complete": true,
2026-06-21T09:37:52.1308156Z           "evidence": [
2026-06-21T09:37:52.1308236Z             {
2026-06-21T09:37:52.1308360Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1308456Z               "line": 100
2026-06-21T09:37:52.1308536Z             },
2026-06-21T09:37:52.1308613Z             {
2026-06-21T09:37:52.1308738Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1308837Z               "line": 183
2026-06-21T09:37:52.1308922Z             },
2026-06-21T09:37:52.1309100Z             {
2026-06-21T09:37:52.1309217Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.1309312Z               "line": 83
2026-06-21T09:37:52.1309539Z             },
2026-06-21T09:37:52.1309625Z             {
2026-06-21T09:37:52.1309749Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1309836Z               "line": 629
2026-06-21T09:37:52.1309925Z             },
2026-06-21T09:37:52.1310011Z             {
2026-06-21T09:37:52.1310117Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1310202Z               "line": 654
2026-06-21T09:37:52.1310283Z             }
2026-06-21T09:37:52.1310370Z           ]
2026-06-21T09:37:52.1310450Z         },
2026-06-21T09:37:52.1310540Z         "int": {
2026-06-21T09:37:52.1310636Z           "complete": false,
2026-06-21T09:37:52.1310827Z           "evidence": []
2026-06-21T09:37:52.1310912Z         },
2026-06-21T09:37:52.1310994Z         "unit": {
2026-06-21T09:37:52.1311089Z           "complete": true,
2026-06-21T09:37:52.1311174Z           "evidence": [
2026-06-21T09:37:52.1311260Z             {
2026-06-21T09:37:52.1311390Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1311475Z               "line": 1445
2026-06-21T09:37:52.1311566Z             },
2026-06-21T09:37:52.1311653Z             {
2026-06-21T09:37:52.1311775Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1311861Z               "line": 1478
2026-06-21T09:37:52.1311948Z             },
2026-06-21T09:37:52.1312033Z             {
2026-06-21T09:37:52.1312137Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1312227Z               "line": 988
2026-06-21T09:37:52.1312309Z             }
2026-06-21T09:37:52.1312397Z           ]
2026-06-21T09:37:52.1312478Z         }
2026-06-21T09:37:52.1312568Z       }
2026-06-21T09:37:52.1312650Z     },
2026-06-21T09:37:52.1312735Z     {
2026-06-21T09:37:52.1312830Z       "id": "REQ-MANIFEST-5",
2026-06-21T09:37:52.1315669Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T09:37:52.1315794Z       "requiredStages": [
2026-06-21T09:37:52.1315889Z         "doc",
2026-06-21T09:37:52.1315974Z         "impl",
2026-06-21T09:37:52.1316050Z         "unit"
2026-06-21T09:37:52.1316142Z       ],
2026-06-21T09:37:52.1316222Z       "stages": {
2026-06-21T09:37:52.1316308Z         "doc": {
2026-06-21T09:37:52.1316399Z           "complete": true,
2026-06-21T09:37:52.1316481Z           "evidence": [
2026-06-21T09:37:52.1316561Z             {
2026-06-21T09:37:52.1316661Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1316748Z               "line": 83
2026-06-21T09:37:52.1316833Z             }
2026-06-21T09:37:52.1316923Z           ]
2026-06-21T09:37:52.1317004Z         },
2026-06-21T09:37:52.1317087Z         "impl": {
2026-06-21T09:37:52.1317176Z           "complete": true,
2026-06-21T09:37:52.1317267Z           "evidence": [
2026-06-21T09:37:52.1317358Z             {
2026-06-21T09:37:52.1317482Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1317580Z               "line": 120
2026-06-21T09:37:52.1317656Z             }
2026-06-21T09:37:52.1317742Z           ]
2026-06-21T09:37:52.1317829Z         },
2026-06-21T09:37:52.1317913Z         "int": {
2026-06-21T09:37:52.1318115Z           "complete": false,
2026-06-21T09:37:52.1318196Z           "evidence": []
2026-06-21T09:37:52.1318285Z         },
2026-06-21T09:37:52.1318368Z         "unit": {
2026-06-21T09:37:52.1318458Z           "complete": true,
2026-06-21T09:37:52.1318534Z           "evidence": [
2026-06-21T09:37:52.1318620Z             {
2026-06-21T09:37:52.1318744Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T09:37:52.1318830Z               "line": 404
2026-06-21T09:37:52.1318925Z             },
2026-06-21T09:37:52.1319111Z             {
2026-06-21T09:37:52.1319230Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1319430Z               "line": 1155
2026-06-21T09:37:52.1319511Z             },
2026-06-21T09:37:52.1319597Z             {
2026-06-21T09:37:52.1319712Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1319806Z               "line": 1184
2026-06-21T09:37:52.1319877Z             },
2026-06-21T09:37:52.1319963Z             {
2026-06-21T09:37:52.1320077Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1320166Z               "line": 1224
2026-06-21T09:37:52.1320247Z             },
2026-06-21T09:37:52.1320329Z             {
2026-06-21T09:37:52.1320447Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1320537Z               "line": 1239
2026-06-21T09:37:52.1320624Z             }
2026-06-21T09:37:52.1320710Z           ]
2026-06-21T09:37:52.1320790Z         }
2026-06-21T09:37:52.1320871Z       }
2026-06-21T09:37:52.1320954Z     },
2026-06-21T09:37:52.1321034Z     {
2026-06-21T09:37:52.1321133Z       "id": "REQ-MANIFEST-6",
2026-06-21T09:37:52.1323234Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T09:37:52.1323343Z       "requiredStages": [
2026-06-21T09:37:52.1323433Z         "doc",
2026-06-21T09:37:52.1323520Z         "unit"
2026-06-21T09:37:52.1323606Z       ],
2026-06-21T09:37:52.1323696Z       "stages": {
2026-06-21T09:37:52.1323777Z         "doc": {
2026-06-21T09:37:52.1323882Z           "complete": true,
2026-06-21T09:37:52.1323972Z           "evidence": [
2026-06-21T09:37:52.1324058Z             {
2026-06-21T09:37:52.1324164Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1324259Z               "line": 141
2026-06-21T09:37:52.1324340Z             }
2026-06-21T09:37:52.1324426Z           ]
2026-06-21T09:37:52.1324521Z         },
2026-06-21T09:37:52.1324611Z         "impl": {
2026-06-21T09:37:52.1324702Z           "complete": false,
2026-06-21T09:37:52.1324784Z           "evidence": []
2026-06-21T09:37:52.1324869Z         },
2026-06-21T09:37:52.1324955Z         "int": {
2026-06-21T09:37:52.1325046Z           "complete": false,
2026-06-21T09:37:52.1325137Z           "evidence": []
2026-06-21T09:37:52.1325226Z         },
2026-06-21T09:37:52.1325311Z         "unit": {
2026-06-21T09:37:52.1325397Z           "complete": true,
2026-06-21T09:37:52.1325487Z           "evidence": [
2026-06-21T09:37:52.1325571Z             {
2026-06-21T09:37:52.1325695Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.1325791Z               "line": 1261
2026-06-21T09:37:52.1325876Z             }
2026-06-21T09:37:52.1325971Z           ]
2026-06-21T09:37:52.1326049Z         }
2026-06-21T09:37:52.1326139Z       }
2026-06-21T09:37:52.1326219Z     },
2026-06-21T09:37:52.1326300Z     {
2026-06-21T09:37:52.1326525Z       "id": "REQ-MANIFEST-7",
2026-06-21T09:37:52.1329558Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T09:37:52.1329776Z       "requiredStages": [
2026-06-21T09:37:52.1329868Z         "doc",
2026-06-21T09:37:52.1329948Z         "impl",
2026-06-21T09:37:52.1330033Z         "unit"
2026-06-21T09:37:52.1330119Z       ],
2026-06-21T09:37:52.1330202Z       "stages": {
2026-06-21T09:37:52.1330287Z         "doc": {
2026-06-21T09:37:52.1330380Z           "complete": true,
2026-06-21T09:37:52.1330466Z           "evidence": [
2026-06-21T09:37:52.1330542Z             {
2026-06-21T09:37:52.1330646Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.1330740Z               "line": 35
2026-06-21T09:37:52.1330817Z             }
2026-06-21T09:37:52.1330917Z           ]
2026-06-21T09:37:52.1330994Z         },
2026-06-21T09:37:52.1331083Z         "impl": {
2026-06-21T09:37:52.1331174Z           "complete": true,
2026-06-21T09:37:52.1331255Z           "evidence": [
2026-06-21T09:37:52.1331341Z             {
2026-06-21T09:37:52.1331461Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1331566Z               "line": 54
2026-06-21T09:37:52.1331651Z             }
2026-06-21T09:37:52.1331737Z           ]
2026-06-21T09:37:52.1331809Z         },
2026-06-21T09:37:52.1331895Z         "int": {
2026-06-21T09:37:52.1331985Z           "complete": false,
2026-06-21T09:37:52.1332066Z           "evidence": []
2026-06-21T09:37:52.1332153Z         },
2026-06-21T09:37:52.1332242Z         "unit": {
2026-06-21T09:37:52.1332337Z           "complete": true,
2026-06-21T09:37:52.1332420Z           "evidence": [
2026-06-21T09:37:52.1332510Z             {
2026-06-21T09:37:52.1332629Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1332730Z               "line": 1638
2026-06-21T09:37:52.1332821Z             }
2026-06-21T09:37:52.1332904Z           ]
2026-06-21T09:37:52.1332986Z         }
2026-06-21T09:37:52.1333073Z       }
2026-06-21T09:37:52.1333159Z     },
2026-06-21T09:37:52.1333233Z     {
2026-06-21T09:37:52.1333319Z       "id": "REQ-MANIFEST-8",
2026-06-21T09:37:52.1335471Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T09:37:52.1335587Z       "requiredStages": [
2026-06-21T09:37:52.1335674Z         "doc",
2026-06-21T09:37:52.1335758Z         "impl",
2026-06-21T09:37:52.1335838Z         "unit",
2026-06-21T09:37:52.1335929Z         "int"
2026-06-21T09:37:52.1336010Z       ],
2026-06-21T09:37:52.1336207Z       "stages": {
2026-06-21T09:37:52.1336294Z         "doc": {
2026-06-21T09:37:52.1336390Z           "complete": true,
2026-06-21T09:37:52.1336479Z           "evidence": [
2026-06-21T09:37:52.1336561Z             {
2026-06-21T09:37:52.1336661Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1336756Z               "line": 184
2026-06-21T09:37:52.1336837Z             },
2026-06-21T09:37:52.1336924Z             {
2026-06-21T09:37:52.1337028Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.1337113Z               "line": 46
2026-06-21T09:37:52.1337200Z             }
2026-06-21T09:37:52.1337286Z           ]
2026-06-21T09:37:52.1337442Z         },
2026-06-21T09:37:52.1337524Z         "impl": {
2026-06-21T09:37:52.1337624Z           "complete": true,
2026-06-21T09:37:52.1337710Z           "evidence": [
2026-06-21T09:37:52.1337791Z             {
2026-06-21T09:37:52.1337907Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1337996Z               "line": 222
2026-06-21T09:37:52.1338081Z             },
2026-06-21T09:37:52.1338164Z             {
2026-06-21T09:37:52.1338282Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.1338368Z               "line": 306
2026-06-21T09:37:52.1338454Z             }
2026-06-21T09:37:52.1338541Z           ]
2026-06-21T09:37:52.1338620Z         },
2026-06-21T09:37:52.1338701Z         "int": {
2026-06-21T09:37:52.1338781Z           "complete": true,
2026-06-21T09:37:52.1338868Z           "evidence": [
2026-06-21T09:37:52.1339034Z             {
2026-06-21T09:37:52.1339168Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T09:37:52.1339249Z               "line": 18
2026-06-21T09:37:52.1339344Z             }
2026-06-21T09:37:52.1339425Z           ]
2026-06-21T09:37:52.1339498Z         },
2026-06-21T09:37:52.1339583Z         "unit": {
2026-06-21T09:37:52.1339673Z           "complete": true,
2026-06-21T09:37:52.1339755Z           "evidence": [
2026-06-21T09:37:52.1339836Z             {
2026-06-21T09:37:52.1339969Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1340054Z               "line": 1656
2026-06-21T09:37:52.1340127Z             },
2026-06-21T09:37:52.1340208Z             {
2026-06-21T09:37:52.1340322Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1340418Z               "line": 316
2026-06-21T09:37:52.1340503Z             },
2026-06-21T09:37:52.1340584Z             {
2026-06-21T09:37:52.1340708Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1340804Z               "line": 332
2026-06-21T09:37:52.1340889Z             },
2026-06-21T09:37:52.1340979Z             {
2026-06-21T09:37:52.1341084Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.1341164Z               "line": 345
2026-06-21T09:37:52.1341248Z             },
2026-06-21T09:37:52.1341338Z             {
2026-06-21T09:37:52.1341439Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.1341539Z               "line": 422
2026-06-21T09:37:52.1341615Z             },
2026-06-21T09:37:52.1341696Z             {
2026-06-21T09:37:52.1341802Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T09:37:52.1341887Z               "line": 436
2026-06-21T09:37:52.1341972Z             }
2026-06-21T09:37:52.1342055Z           ]
2026-06-21T09:37:52.1342149Z         }
2026-06-21T09:37:52.1342230Z       }
2026-06-21T09:37:52.1342321Z     },
2026-06-21T09:37:52.1342398Z     {
2026-06-21T09:37:52.1342493Z       "id": "REQ-MESH-1",
2026-06-21T09:37:52.1344553Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T09:37:52.1344773Z       "requiredStages": [
2026-06-21T09:37:52.1344854Z         "impl",
2026-06-21T09:37:52.1344941Z         "unit",
2026-06-21T09:37:52.1345026Z         "int"
2026-06-21T09:37:52.1345107Z       ],
2026-06-21T09:37:52.1345188Z       "stages": {
2026-06-21T09:37:52.1345275Z         "doc": {
2026-06-21T09:37:52.1345359Z           "complete": false,
2026-06-21T09:37:52.1345445Z           "evidence": []
2026-06-21T09:37:52.1345623Z         },
2026-06-21T09:37:52.1345707Z         "impl": {
2026-06-21T09:37:52.1345803Z           "complete": true,
2026-06-21T09:37:52.1345890Z           "evidence": [
2026-06-21T09:37:52.1345966Z             {
2026-06-21T09:37:52.1346094Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1346200Z               "line": 972
2026-06-21T09:37:52.1346295Z             },
2026-06-21T09:37:52.1346379Z             {
2026-06-21T09:37:52.1346513Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1346603Z               "line": 38
2026-06-21T09:37:52.1346687Z             },
2026-06-21T09:37:52.1346777Z             {
2026-06-21T09:37:52.1346911Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1346997Z               "line": 161
2026-06-21T09:37:52.1347082Z             },
2026-06-21T09:37:52.1347169Z             {
2026-06-21T09:37:52.1347288Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1347392Z               "line": 206
2026-06-21T09:37:52.1347474Z             },
2026-06-21T09:37:52.1347555Z             {
2026-06-21T09:37:52.1347683Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1347775Z               "line": 57
2026-06-21T09:37:52.1347851Z             },
2026-06-21T09:37:52.1347936Z             {
2026-06-21T09:37:52.1348069Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1348166Z               "line": 24
2026-06-21T09:37:52.1348251Z             },
2026-06-21T09:37:52.1348336Z             {
2026-06-21T09:37:52.1348462Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1348560Z               "line": 142
2026-06-21T09:37:52.1348637Z             },
2026-06-21T09:37:52.1348719Z             {
2026-06-21T09:37:52.1348852Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1348933Z               "line": 162
2026-06-21T09:37:52.1349111Z             }
2026-06-21T09:37:52.1349190Z           ]
2026-06-21T09:37:52.1349270Z         },
2026-06-21T09:37:52.1349356Z         "int": {
2026-06-21T09:37:52.1349452Z           "complete": true,
2026-06-21T09:37:52.1349542Z           "evidence": [
2026-06-21T09:37:52.1349632Z             {
2026-06-21T09:37:52.1349757Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:37:52.1349848Z               "line": 67
2026-06-21T09:37:52.1349933Z             },
2026-06-21T09:37:52.1350010Z             {
2026-06-21T09:37:52.1350138Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:37:52.1350223Z               "line": 93
2026-06-21T09:37:52.1350300Z             },
2026-06-21T09:37:52.1350387Z             {
2026-06-21T09:37:52.1350505Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:37:52.1350600Z               "line": 117
2026-06-21T09:37:52.1350683Z             },
2026-06-21T09:37:52.1350772Z             {
2026-06-21T09:37:52.1350896Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T09:37:52.1350978Z               "line": 134
2026-06-21T09:37:52.1351068Z             }
2026-06-21T09:37:52.1351149Z           ]
2026-06-21T09:37:52.1351230Z         },
2026-06-21T09:37:52.1351312Z         "unit": {
2026-06-21T09:37:52.1351412Z           "complete": true,
2026-06-21T09:37:52.1351610Z           "evidence": [
2026-06-21T09:37:52.1351696Z             {
2026-06-21T09:37:52.1351809Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1351889Z               "line": 427
2026-06-21T09:37:52.1351980Z             },
2026-06-21T09:37:52.1352067Z             {
2026-06-21T09:37:52.1352194Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1352281Z               "line": 376
2026-06-21T09:37:52.1352362Z             },
2026-06-21T09:37:52.1352443Z             {
2026-06-21T09:37:52.1352562Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1352771Z               "line": 412
2026-06-21T09:37:52.1352862Z             },
2026-06-21T09:37:52.1352939Z             {
2026-06-21T09:37:52.1353067Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1353152Z               "line": 427
2026-06-21T09:37:52.1353240Z             },
2026-06-21T09:37:52.1353329Z             {
2026-06-21T09:37:52.1353458Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1353550Z               "line": 438
2026-06-21T09:37:52.1353630Z             },
2026-06-21T09:37:52.1353715Z             {
2026-06-21T09:37:52.1353840Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1353921Z               "line": 449
2026-06-21T09:37:52.1354006Z             },
2026-06-21T09:37:52.1354088Z             {
2026-06-21T09:37:52.1354222Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1354307Z               "line": 460
2026-06-21T09:37:52.1354396Z             },
2026-06-21T09:37:52.1354472Z             {
2026-06-21T09:37:52.1354601Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1354685Z               "line": 496
2026-06-21T09:37:52.1354775Z             },
2026-06-21T09:37:52.1354861Z             {
2026-06-21T09:37:52.1354990Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1355085Z               "line": 519
2026-06-21T09:37:52.1355167Z             },
2026-06-21T09:37:52.1355253Z             {
2026-06-21T09:37:52.1355380Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1355468Z               "line": 546
2026-06-21T09:37:52.1355549Z             }
2026-06-21T09:37:52.1355630Z           ]
2026-06-21T09:37:52.1355709Z         }
2026-06-21T09:37:52.1355792Z       }
2026-06-21T09:37:52.1355878Z     },
2026-06-21T09:37:52.1355959Z     {
2026-06-21T09:37:52.1356054Z       "id": "REQ-MESH-2",
2026-06-21T09:37:52.1358582Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T09:37:52.1358702Z       "requiredStages": [
2026-06-21T09:37:52.1358782Z         "impl",
2026-06-21T09:37:52.1358863Z         "unit",
2026-06-21T09:37:52.1359031Z         "int"
2026-06-21T09:37:52.1359116Z       ],
2026-06-21T09:37:52.1359197Z       "stages": {
2026-06-21T09:37:52.1359279Z         "doc": {
2026-06-21T09:37:52.1359375Z           "complete": false,
2026-06-21T09:37:52.1359459Z           "evidence": []
2026-06-21T09:37:52.1359540Z         },
2026-06-21T09:37:52.1359618Z         "impl": {
2026-06-21T09:37:52.1359821Z           "complete": true,
2026-06-21T09:37:52.1359906Z           "evidence": [
2026-06-21T09:37:52.1359998Z             {
2026-06-21T09:37:52.1360126Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1360216Z               "line": 807
2026-06-21T09:37:52.1360303Z             },
2026-06-21T09:37:52.1360379Z             {
2026-06-21T09:37:52.1360512Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1360599Z               "line": 118
2026-06-21T09:37:52.1360679Z             },
2026-06-21T09:37:52.1360769Z             {
2026-06-21T09:37:52.1360889Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1361075Z               "line": 347
2026-06-21T09:37:52.1361156Z             },
2026-06-21T09:37:52.1361238Z             {
2026-06-21T09:37:52.1361351Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1361432Z               "line": 389
2026-06-21T09:37:52.1361529Z             },
2026-06-21T09:37:52.1361614Z             {
2026-06-21T09:37:52.1361733Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1361819Z               "line": 403
2026-06-21T09:37:52.1361906Z             },
2026-06-21T09:37:52.1361990Z             {
2026-06-21T09:37:52.1362103Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1362189Z               "line": 492
2026-06-21T09:37:52.1362270Z             },
2026-06-21T09:37:52.1362354Z             {
2026-06-21T09:37:52.1362463Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1362545Z               "line": 507
2026-06-21T09:37:52.1362641Z             },
2026-06-21T09:37:52.1362716Z             {
2026-06-21T09:37:52.1362836Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1362927Z               "line": 534
2026-06-21T09:37:52.1363017Z             },
2026-06-21T09:37:52.1363097Z             {
2026-06-21T09:37:52.1363227Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1363326Z               "line": 207
2026-06-21T09:37:52.1363412Z             },
2026-06-21T09:37:52.1363495Z             {
2026-06-21T09:37:52.1363604Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1363694Z               "line": 755
2026-06-21T09:37:52.1363780Z             },
2026-06-21T09:37:52.1363866Z             {
2026-06-21T09:37:52.1363994Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1364090Z               "line": 816
2026-06-21T09:37:52.1364176Z             },
2026-06-21T09:37:52.1364261Z             {
2026-06-21T09:37:52.1364396Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1364486Z               "line": 869
2026-06-21T09:37:52.1364576Z             },
2026-06-21T09:37:52.1364658Z             {
2026-06-21T09:37:52.1364773Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1364862Z               "line": 891
2026-06-21T09:37:52.1364942Z             },
2026-06-21T09:37:52.1365033Z             {
2026-06-21T09:37:52.1365137Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.1365226Z               "line": 122
2026-06-21T09:37:52.1365311Z             },
2026-06-21T09:37:52.1365388Z             {
2026-06-21T09:37:52.1365498Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1365584Z               "line": 44
2026-06-21T09:37:52.1365679Z             },
2026-06-21T09:37:52.1365847Z             {
2026-06-21T09:37:52.1365974Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1366066Z               "line": 184
2026-06-21T09:37:52.1366151Z             },
2026-06-21T09:37:52.1366227Z             {
2026-06-21T09:37:52.1366337Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1366424Z               "line": 211
2026-06-21T09:37:52.1366504Z             },
2026-06-21T09:37:52.1366594Z             {
2026-06-21T09:37:52.1366790Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1366876Z               "line": 251
2026-06-21T09:37:52.1366962Z             },
2026-06-21T09:37:52.1367034Z             {
2026-06-21T09:37:52.1367152Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1367248Z               "line": 275
2026-06-21T09:37:52.1367325Z             },
2026-06-21T09:37:52.1367411Z             {
2026-06-21T09:37:52.1367518Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1367599Z               "line": 289
2026-06-21T09:37:52.1367680Z             },
2026-06-21T09:37:52.1367770Z             {
2026-06-21T09:37:52.1367955Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1368046Z               "line": 300
2026-06-21T09:37:52.1368127Z             },
2026-06-21T09:37:52.1368212Z             {
2026-06-21T09:37:52.1368323Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1368409Z               "line": 313
2026-06-21T09:37:52.1368488Z             }
2026-06-21T09:37:52.1368575Z           ]
2026-06-21T09:37:52.1368652Z         },
2026-06-21T09:37:52.1368742Z         "int": {
2026-06-21T09:37:52.1368832Z           "complete": true,
2026-06-21T09:37:52.1368919Z           "evidence": [
2026-06-21T09:37:52.1369086Z             {
2026-06-21T09:37:52.1369219Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T09:37:52.1369314Z               "line": 116
2026-06-21T09:37:52.1369391Z             },
2026-06-21T09:37:52.1369476Z             {
2026-06-21T09:37:52.1369596Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T09:37:52.1369690Z               "line": 181
2026-06-21T09:37:52.1369776Z             }
2026-06-21T09:37:52.1369864Z           ]
2026-06-21T09:37:52.1369944Z         },
2026-06-21T09:37:52.1370024Z         "unit": {
2026-06-21T09:37:52.1370115Z           "complete": true,
2026-06-21T09:37:52.1370202Z           "evidence": [
2026-06-21T09:37:52.1370287Z             {
2026-06-21T09:37:52.1370419Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1370505Z               "line": 999
2026-06-21T09:37:52.1370591Z             },
2026-06-21T09:37:52.1370677Z             {
2026-06-21T09:37:52.1370800Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1370892Z               "line": 1016
2026-06-21T09:37:52.1370973Z             },
2026-06-21T09:37:52.1371058Z             {
2026-06-21T09:37:52.1371183Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1371278Z               "line": 1024
2026-06-21T09:37:52.1371348Z             },
2026-06-21T09:37:52.1371449Z             {
2026-06-21T09:37:52.1371564Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1371654Z               "line": 1048
2026-06-21T09:37:52.1371740Z             },
2026-06-21T09:37:52.1371822Z             {
2026-06-21T09:37:52.1371950Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1372045Z               "line": 1499
2026-06-21T09:37:52.1372127Z             },
2026-06-21T09:37:52.1372212Z             {
2026-06-21T09:37:52.1372331Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1372418Z               "line": 347
2026-06-21T09:37:52.1372499Z             },
2026-06-21T09:37:52.1372583Z             {
2026-06-21T09:37:52.1372706Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1372793Z               "line": 370
2026-06-21T09:37:52.1372877Z             },
2026-06-21T09:37:52.1372957Z             {
2026-06-21T09:37:52.1373071Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1373168Z               "line": 407
2026-06-21T09:37:52.1373248Z             },
2026-06-21T09:37:52.1373328Z             {
2026-06-21T09:37:52.1373439Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1373525Z               "line": 431
2026-06-21T09:37:52.1373610Z             },
2026-06-21T09:37:52.1373787Z             {
2026-06-21T09:37:52.1373891Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1373977Z               "line": 483
2026-06-21T09:37:52.1374060Z             },
2026-06-21T09:37:52.1374145Z             {
2026-06-21T09:37:52.1374254Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1374336Z               "line": 499
2026-06-21T09:37:52.1374421Z             },
2026-06-21T09:37:52.1374498Z             {
2026-06-21T09:37:52.1374602Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1374685Z               "line": 514
2026-06-21T09:37:52.1374764Z             },
2026-06-21T09:37:52.1374941Z             {
2026-06-21T09:37:52.1375056Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1375136Z               "line": 531
2026-06-21T09:37:52.1375218Z             }
2026-06-21T09:37:52.1375299Z           ]
2026-06-21T09:37:52.1375385Z         }
2026-06-21T09:37:52.1375474Z       }
2026-06-21T09:37:52.1375564Z     },
2026-06-21T09:37:52.1375650Z     {
2026-06-21T09:37:52.1375749Z       "id": "REQ-MESH-3",
2026-06-21T09:37:52.1377383Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T09:37:52.1377498Z       "requiredStages": [
2026-06-21T09:37:52.1377594Z         "impl",
2026-06-21T09:37:52.1377679Z         "unit",
2026-06-21T09:37:52.1377770Z         "int"
2026-06-21T09:37:52.1377852Z       ],
2026-06-21T09:37:52.1377942Z       "stages": {
2026-06-21T09:37:52.1378017Z         "doc": {
2026-06-21T09:37:52.1378131Z           "complete": false,
2026-06-21T09:37:52.1378222Z           "evidence": []
2026-06-21T09:37:52.1378311Z         },
2026-06-21T09:37:52.1378395Z         "impl": {
2026-06-21T09:37:52.1378477Z           "complete": true,
2026-06-21T09:37:52.1378573Z           "evidence": [
2026-06-21T09:37:52.1378654Z             {
2026-06-21T09:37:52.1378782Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.1378878Z               "line": 641
2026-06-21T09:37:52.1379049Z             }
2026-06-21T09:37:52.1379130Z           ]
2026-06-21T09:37:52.1379207Z         },
2026-06-21T09:37:52.1379293Z         "int": {
2026-06-21T09:37:52.1379387Z           "complete": true,
2026-06-21T09:37:52.1379479Z           "evidence": [
2026-06-21T09:37:52.1379579Z             {
2026-06-21T09:37:52.1379702Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T09:37:52.1379799Z               "line": 373
2026-06-21T09:37:52.1379884Z             },
2026-06-21T09:37:52.1379975Z             {
2026-06-21T09:37:52.1380094Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T09:37:52.1380189Z               "line": 436
2026-06-21T09:37:52.1380274Z             }
2026-06-21T09:37:52.1380355Z           ]
2026-06-21T09:37:52.1380443Z         },
2026-06-21T09:37:52.1380528Z         "unit": {
2026-06-21T09:37:52.1380623Z           "complete": true,
2026-06-21T09:37:52.1380714Z           "evidence": [
2026-06-21T09:37:52.1380800Z             {
2026-06-21T09:37:52.1380917Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.1381012Z               "line": 910
2026-06-21T09:37:52.1381098Z             }
2026-06-21T09:37:52.1381186Z           ]
2026-06-21T09:37:52.1381274Z         }
2026-06-21T09:37:52.1381360Z       }
2026-06-21T09:37:52.1381443Z     },
2026-06-21T09:37:52.1381529Z     {
2026-06-21T09:37:52.1384762Z       "id": "REQ-MESH-4",
2026-06-21T09:37:52.1387085Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T09:37:52.1387506Z       "requiredStages": [
2026-06-21T09:37:52.1387600Z         "impl",
2026-06-21T09:37:52.1387696Z         "unit",
2026-06-21T09:37:52.1387782Z         "int"
2026-06-21T09:37:52.1387873Z       ],
2026-06-21T09:37:52.1387953Z       "stages": {
2026-06-21T09:37:52.1388039Z         "doc": {
2026-06-21T09:37:52.1388164Z           "complete": false,
2026-06-21T09:37:52.1388244Z           "evidence": []
2026-06-21T09:37:52.1388340Z         },
2026-06-21T09:37:52.1388417Z         "impl": {
2026-06-21T09:37:52.1388517Z           "complete": true,
2026-06-21T09:37:52.1388615Z           "evidence": [
2026-06-21T09:37:52.1388700Z             {
2026-06-21T09:37:52.1388843Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:37:52.1388923Z               "line": 33
2026-06-21T09:37:52.1389095Z             },
2026-06-21T09:37:52.1389181Z             {
2026-06-21T09:37:52.1389327Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1389433Z               "line": 68
2026-06-21T09:37:52.1389524Z             },
2026-06-21T09:37:52.1389618Z             {
2026-06-21T09:37:52.1389739Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1389834Z               "line": 111
2026-06-21T09:37:52.1389929Z             },
2026-06-21T09:37:52.1390020Z             {
2026-06-21T09:37:52.1390148Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1390248Z               "line": 462
2026-06-21T09:37:52.1390329Z             },
2026-06-21T09:37:52.1390416Z             {
2026-06-21T09:37:52.1390535Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1390615Z               "line": 711
2026-06-21T09:37:52.1390698Z             },
2026-06-21T09:37:52.1390777Z             {
2026-06-21T09:37:52.1390901Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1390979Z               "line": 725
2026-06-21T09:37:52.1391060Z             },
2026-06-21T09:37:52.1391158Z             {
2026-06-21T09:37:52.1391289Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.1391393Z               "line": 132
2026-06-21T09:37:52.1391473Z             },
2026-06-21T09:37:52.1391572Z             {
2026-06-21T09:37:52.1391703Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:37:52.1391807Z               "line": 26
2026-06-21T09:37:52.1391911Z             },
2026-06-21T09:37:52.1391988Z             {
2026-06-21T09:37:52.1392107Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:37:52.1392192Z               "line": 97
2026-06-21T09:37:52.1392289Z             },
2026-06-21T09:37:52.1392374Z             {
2026-06-21T09:37:52.1392483Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:37:52.1392569Z               "line": 119
2026-06-21T09:37:52.1392651Z             },
2026-06-21T09:37:52.1392731Z             {
2026-06-21T09:37:52.1392855Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1392952Z               "line": 82
2026-06-21T09:37:52.1393046Z             },
2026-06-21T09:37:52.1393122Z             {
2026-06-21T09:37:52.1393238Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1393328Z               "line": 111
2026-06-21T09:37:52.1393413Z             },
2026-06-21T09:37:52.1393619Z             {
2026-06-21T09:37:52.1393727Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1393812Z               "line": 232
2026-06-21T09:37:52.1393898Z             },
2026-06-21T09:37:52.1393979Z             {
2026-06-21T09:37:52.1394097Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1394188Z               "line": 245
2026-06-21T09:37:52.1394269Z             },
2026-06-21T09:37:52.1394354Z             {
2026-06-21T09:37:52.1394468Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1394565Z               "line": 4665
2026-06-21T09:37:52.1394660Z             }
2026-06-21T09:37:52.1394740Z           ]
2026-06-21T09:37:52.1394936Z         },
2026-06-21T09:37:52.1395026Z         "int": {
2026-06-21T09:37:52.1395112Z           "complete": true,
2026-06-21T09:37:52.1395213Z           "evidence": [
2026-06-21T09:37:52.1395284Z             {
2026-06-21T09:37:52.1395413Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T09:37:52.1395504Z               "line": 98
2026-06-21T09:37:52.1395589Z             },
2026-06-21T09:37:52.1395674Z             {
2026-06-21T09:37:52.1395776Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T09:37:52.1395871Z               "line": 140
2026-06-21T09:37:52.1395956Z             }
2026-06-21T09:37:52.1396052Z           ]
2026-06-21T09:37:52.1396139Z         },
2026-06-21T09:37:52.1396233Z         "unit": {
2026-06-21T09:37:52.1396338Z           "complete": true,
2026-06-21T09:37:52.1396434Z           "evidence": [
2026-06-21T09:37:52.1396529Z             {
2026-06-21T09:37:52.1396666Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:37:52.1396756Z               "line": 178
2026-06-21T09:37:52.1396846Z             },
2026-06-21T09:37:52.1396935Z             {
2026-06-21T09:37:52.1397064Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:37:52.1397155Z               "line": 242
2026-06-21T09:37:52.1397235Z             },
2026-06-21T09:37:52.1397326Z             {
2026-06-21T09:37:52.1397455Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1397541Z               "line": 1079
2026-06-21T09:37:52.1397621Z             },
2026-06-21T09:37:52.1397703Z             {
2026-06-21T09:37:52.1397813Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1397898Z               "line": 1109
2026-06-21T09:37:52.1397974Z             },
2026-06-21T09:37:52.1398061Z             {
2026-06-21T09:37:52.1398175Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T09:37:52.1398261Z               "line": 1129
2026-06-21T09:37:52.1398362Z             },
2026-06-21T09:37:52.1398442Z             {
2026-06-21T09:37:52.1398575Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T09:37:52.1398662Z               "line": 602
2026-06-21T09:37:52.1398748Z             },
2026-06-21T09:37:52.1398828Z             {
2026-06-21T09:37:52.1399039Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:37:52.1399128Z               "line": 148
2026-06-21T09:37:52.1399204Z             },
2026-06-21T09:37:52.1399290Z             {
2026-06-21T09:37:52.1399398Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:37:52.1399488Z               "line": 169
2026-06-21T09:37:52.1399573Z             },
2026-06-21T09:37:52.1399655Z             {
2026-06-21T09:37:52.1399774Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:37:52.1399859Z               "line": 181
2026-06-21T09:37:52.1399945Z             },
2026-06-21T09:37:52.1400027Z             {
2026-06-21T09:37:52.1400131Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T09:37:52.1400231Z               "line": 202
2026-06-21T09:37:52.1400313Z             },
2026-06-21T09:37:52.1400394Z             {
2026-06-21T09:37:52.1400512Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1400614Z               "line": 375
2026-06-21T09:37:52.1400798Z             },
2026-06-21T09:37:52.1400885Z             {
2026-06-21T09:37:52.1401009Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1401095Z               "line": 407
2026-06-21T09:37:52.1401180Z             },
2026-06-21T09:37:52.1401248Z             {
2026-06-21T09:37:52.1401357Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1401442Z               "line": 10052
2026-06-21T09:37:52.1401524Z             }
2026-06-21T09:37:52.1401606Z           ]
2026-06-21T09:37:52.1401690Z         }
2026-06-21T09:37:52.1401772Z       }
2026-06-21T09:37:52.1401854Z     },
2026-06-21T09:37:52.1401939Z     {
2026-06-21T09:37:52.1402118Z       "id": "REQ-MESH-5",
2026-06-21T09:37:52.1403512Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T09:37:52.1403620Z       "requiredStages": [
2026-06-21T09:37:52.1403701Z         "impl",
2026-06-21T09:37:52.1403789Z         "unit"
2026-06-21T09:37:52.1403874Z       ],
2026-06-21T09:37:52.1403958Z       "stages": {
2026-06-21T09:37:52.1404040Z         "doc": {
2026-06-21T09:37:52.1404132Z           "complete": false,
2026-06-21T09:37:52.1404226Z           "evidence": []
2026-06-21T09:37:52.1404301Z         },
2026-06-21T09:37:52.1404391Z         "impl": {
2026-06-21T09:37:52.1404492Z           "complete": true,
2026-06-21T09:37:52.1404581Z           "evidence": [
2026-06-21T09:37:52.1404666Z             {
2026-06-21T09:37:52.1404790Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1404877Z               "line": 61
2026-06-21T09:37:52.1404952Z             },
2026-06-21T09:37:52.1405043Z             {
2026-06-21T09:37:52.1405163Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1405258Z               "line": 109
2026-06-21T09:37:52.1405338Z             },
2026-06-21T09:37:52.1405416Z             {
2026-06-21T09:37:52.1405535Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1405619Z               "line": 104
2026-06-21T09:37:52.1405712Z             },
2026-06-21T09:37:52.1405792Z             {
2026-06-21T09:37:52.1405920Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.1406006Z               "line": 105
2026-06-21T09:37:52.1406093Z             },
2026-06-21T09:37:52.1406173Z             {
2026-06-21T09:37:52.1406292Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1406389Z               "line": 85
2026-06-21T09:37:52.1406473Z             },
2026-06-21T09:37:52.1406559Z             {
2026-06-21T09:37:52.1406684Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1406779Z               "line": 250
2026-06-21T09:37:52.1406865Z             },
2026-06-21T09:37:52.1406946Z             {
2026-06-21T09:37:52.1407066Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1407159Z               "line": 314
2026-06-21T09:37:52.1407230Z             },
2026-06-21T09:37:52.1407316Z             {
2026-06-21T09:37:52.1407434Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1407528Z               "line": 767
2026-06-21T09:37:52.1407610Z             },
2026-06-21T09:37:52.1407692Z             {
2026-06-21T09:37:52.1407805Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1407900Z               "line": 101
2026-06-21T09:37:52.1407987Z             },
2026-06-21T09:37:52.1408068Z             {
2026-06-21T09:37:52.1408201Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1408288Z               "line": 193
2026-06-21T09:37:52.1408491Z             }
2026-06-21T09:37:52.1408573Z           ]
2026-06-21T09:37:52.1408645Z         },
2026-06-21T09:37:52.1408735Z         "int": {
2026-06-21T09:37:52.1408821Z           "complete": false,
2026-06-21T09:37:52.1408907Z           "evidence": []
2026-06-21T09:37:52.1409078Z         },
2026-06-21T09:37:52.1409164Z         "unit": {
2026-06-21T09:37:52.1409251Z           "complete": true,
2026-06-21T09:37:52.1409331Z           "evidence": [
2026-06-21T09:37:52.1409417Z             {
2026-06-21T09:37:52.1409537Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1409632Z               "line": 1009
2026-06-21T09:37:52.1409811Z             },
2026-06-21T09:37:52.1409897Z             {
2026-06-21T09:37:52.1410005Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T09:37:52.1410090Z               "line": 462
2026-06-21T09:37:52.1410167Z             }
2026-06-21T09:37:52.1410244Z           ]
2026-06-21T09:37:52.1410329Z         }
2026-06-21T09:37:52.1410419Z       }
2026-06-21T09:37:52.1410501Z     },
2026-06-21T09:37:52.1410582Z     {
2026-06-21T09:37:52.1410668Z       "id": "REQ-MESH-6",
2026-06-21T09:37:52.1411893Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T09:37:52.1411984Z       "requiredStages": [
2026-06-21T09:37:52.1412080Z         "impl",
2026-06-21T09:37:52.1412161Z         "unit"
2026-06-21T09:37:52.1412245Z       ],
2026-06-21T09:37:52.1412337Z       "stages": {
2026-06-21T09:37:52.1412414Z         "doc": {
2026-06-21T09:37:52.1412509Z           "complete": false,
2026-06-21T09:37:52.1412593Z           "evidence": []
2026-06-21T09:37:52.1412678Z         },
2026-06-21T09:37:52.1412770Z         "impl": {
2026-06-21T09:37:52.1412856Z           "complete": true,
2026-06-21T09:37:52.1412955Z           "evidence": [
2026-06-21T09:37:52.1413036Z             {
2026-06-21T09:37:52.1413152Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1413232Z               "line": 4181
2026-06-21T09:37:52.1413317Z             }
2026-06-21T09:37:52.1413405Z           ]
2026-06-21T09:37:52.1413490Z         },
2026-06-21T09:37:52.1413570Z         "int": {
2026-06-21T09:37:52.1413666Z           "complete": false,
2026-06-21T09:37:52.1413743Z           "evidence": []
2026-06-21T09:37:52.1413828Z         },
2026-06-21T09:37:52.1413913Z         "unit": {
2026-06-21T09:37:52.1414009Z           "complete": true,
2026-06-21T09:37:52.1414095Z           "evidence": [
2026-06-21T09:37:52.1414171Z             {
2026-06-21T09:37:52.1414276Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1414363Z               "line": 10602
2026-06-21T09:37:52.1414448Z             },
2026-06-21T09:37:52.1414533Z             {
2026-06-21T09:37:52.1414639Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1414721Z               "line": 10629
2026-06-21T09:37:52.1414800Z             },
2026-06-21T09:37:52.1414880Z             {
2026-06-21T09:37:52.1414985Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1415076Z               "line": 10653
2026-06-21T09:37:52.1415160Z             }
2026-06-21T09:37:52.1415245Z           ]
2026-06-21T09:37:52.1415327Z         }
2026-06-21T09:37:52.1415408Z       }
2026-06-21T09:37:52.1415489Z     },
2026-06-21T09:37:52.1415569Z     {
2026-06-21T09:37:52.1415656Z       "id": "REQ-MIGRATE-1",
2026-06-21T09:37:52.1415827Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T09:37:52.1415927Z       "requiredStages": [],
2026-06-21T09:37:52.1416014Z       "stages": {
2026-06-21T09:37:52.1416095Z         "doc": {
2026-06-21T09:37:52.1416189Z           "complete": false,
2026-06-21T09:37:52.1416404Z           "evidence": []
2026-06-21T09:37:52.1416490Z         },
2026-06-21T09:37:52.1416571Z         "impl": {
2026-06-21T09:37:52.1416662Z           "complete": false,
2026-06-21T09:37:52.1416748Z           "evidence": []
2026-06-21T09:37:52.1416833Z         },
2026-06-21T09:37:52.1416911Z         "int": {
2026-06-21T09:37:52.1417005Z           "complete": false,
2026-06-21T09:37:52.1417091Z           "evidence": []
2026-06-21T09:37:52.1417172Z         },
2026-06-21T09:37:52.1417264Z         "unit": {
2026-06-21T09:37:52.1417353Z           "complete": false,
2026-06-21T09:37:52.1417444Z           "evidence": []
2026-06-21T09:37:52.1417526Z         }
2026-06-21T09:37:52.1417691Z       }
2026-06-21T09:37:52.1417772Z     },
2026-06-21T09:37:52.1417857Z     {
2026-06-21T09:37:52.1417952Z       "id": "REQ-MSG-1",
2026-06-21T09:37:52.1418379Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T09:37:52.1418484Z       "requiredStages": [
2026-06-21T09:37:52.1418567Z         "impl",
2026-06-21T09:37:52.1418652Z         "unit",
2026-06-21T09:37:52.1418737Z         "int"
2026-06-21T09:37:52.1418814Z       ],
2026-06-21T09:37:52.1418905Z       "stages": {
2026-06-21T09:37:52.1419070Z         "doc": {
2026-06-21T09:37:52.1419162Z           "complete": false,
2026-06-21T09:37:52.1419253Z           "evidence": []
2026-06-21T09:37:52.1419334Z         },
2026-06-21T09:37:52.1419419Z         "impl": {
2026-06-21T09:37:52.1419549Z           "complete": true,
2026-06-21T09:37:52.1419643Z           "evidence": [
2026-06-21T09:37:52.1419729Z             {
2026-06-21T09:37:52.1419854Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1419938Z               "line": 28
2026-06-21T09:37:52.1420020Z             },
2026-06-21T09:37:52.1420098Z             {
2026-06-21T09:37:52.1420207Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1420300Z               "line": 94
2026-06-21T09:37:52.1420376Z             },
2026-06-21T09:37:52.1420457Z             {
2026-06-21T09:37:52.1420570Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1420650Z               "line": 127
2026-06-21T09:37:52.1420732Z             },
2026-06-21T09:37:52.1420828Z             {
2026-06-21T09:37:52.1420941Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1421017Z               "line": 149
2026-06-21T09:37:52.1421100Z             },
2026-06-21T09:37:52.1421180Z             {
2026-06-21T09:37:52.1421280Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1421376Z               "line": 174
2026-06-21T09:37:52.1421457Z             },
2026-06-21T09:37:52.1421538Z             {
2026-06-21T09:37:52.1421642Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:37:52.1421734Z               "line": 18
2026-06-21T09:37:52.1421814Z             },
2026-06-21T09:37:52.1421895Z             {
2026-06-21T09:37:52.1422015Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.1422101Z               "line": 13
2026-06-21T09:37:52.1422177Z             },
2026-06-21T09:37:52.1422257Z             {
2026-06-21T09:37:52.1422364Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.1422448Z               "line": 62
2026-06-21T09:37:52.1422530Z             },
2026-06-21T09:37:52.1422615Z             {
2026-06-21T09:37:52.1422712Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1422796Z               "line": 13
2026-06-21T09:37:52.1422877Z             }
2026-06-21T09:37:52.1422960Z           ]
2026-06-21T09:37:52.1423046Z         },
2026-06-21T09:37:52.1423125Z         "int": {
2026-06-21T09:37:52.1423220Z           "complete": true,
2026-06-21T09:37:52.1423296Z           "evidence": [
2026-06-21T09:37:52.1423378Z             {
2026-06-21T09:37:52.1423515Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:37:52.1423596Z               "line": 9
2026-06-21T09:37:52.1423778Z             },
2026-06-21T09:37:52.1423863Z             {
2026-06-21T09:37:52.1423989Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:37:52.1424069Z               "line": 56
2026-06-21T09:37:52.1424154Z             },
2026-06-21T09:37:52.1424236Z             {
2026-06-21T09:37:52.1424360Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:37:52.1424445Z               "line": 113
2026-06-21T09:37:52.1424535Z             }
2026-06-21T09:37:52.1424623Z           ]
2026-06-21T09:37:52.1424693Z         },
2026-06-21T09:37:52.1424774Z         "unit": {
2026-06-21T09:37:52.1424961Z           "complete": true,
2026-06-21T09:37:52.1425055Z           "evidence": [
2026-06-21T09:37:52.1425137Z             {
2026-06-21T09:37:52.1425238Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1425333Z               "line": 203
2026-06-21T09:37:52.1425417Z             },
2026-06-21T09:37:52.1425507Z             {
2026-06-21T09:37:52.1425617Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1425701Z               "line": 232
2026-06-21T09:37:52.1425781Z             },
2026-06-21T09:37:52.1425863Z             {
2026-06-21T09:37:52.1425978Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1426063Z               "line": 277
2026-06-21T09:37:52.1426149Z             },
2026-06-21T09:37:52.1426216Z             {
2026-06-21T09:37:52.1426330Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1426416Z               "line": 300
2026-06-21T09:37:52.1426502Z             },
2026-06-21T09:37:52.1426602Z             {
2026-06-21T09:37:52.1426711Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T09:37:52.1426802Z               "line": 325
2026-06-21T09:37:52.1426884Z             },
2026-06-21T09:37:52.1426974Z             {
2026-06-21T09:37:52.1427078Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:37:52.1427175Z               "line": 204
2026-06-21T09:37:52.1427260Z             },
2026-06-21T09:37:52.1427336Z             {
2026-06-21T09:37:52.1427446Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:37:52.1427528Z               "line": 237
2026-06-21T09:37:52.1427608Z             },
2026-06-21T09:37:52.1427684Z             {
2026-06-21T09:37:52.1427795Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:37:52.1427885Z               "line": 251
2026-06-21T09:37:52.1427956Z             },
2026-06-21T09:37:52.1428037Z             {
2026-06-21T09:37:52.1428148Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:37:52.1428247Z               "line": 263
2026-06-21T09:37:52.1428327Z             },
2026-06-21T09:37:52.1428403Z             {
2026-06-21T09:37:52.1428512Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.1428602Z               "line": 162
2026-06-21T09:37:52.1428682Z             },
2026-06-21T09:37:52.1428764Z             {
2026-06-21T09:37:52.1428874Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T09:37:52.1429049Z               "line": 242
2026-06-21T09:37:52.1429136Z             },
2026-06-21T09:37:52.1429222Z             {
2026-06-21T09:37:52.1429321Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1429408Z               "line": 134
2026-06-21T09:37:52.1429493Z             },
2026-06-21T09:37:52.1429579Z             {
2026-06-21T09:37:52.1429683Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1429765Z               "line": 153
2026-06-21T09:37:52.1429845Z             }
2026-06-21T09:37:52.1429927Z           ]
2026-06-21T09:37:52.1430008Z         }
2026-06-21T09:37:52.1430080Z       }
2026-06-21T09:37:52.1430165Z     },
2026-06-21T09:37:52.1430251Z     {
2026-06-21T09:37:52.1430333Z       "id": "REQ-MSG-2",
2026-06-21T09:37:52.1430599Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T09:37:52.1430790Z       "requiredStages": [
2026-06-21T09:37:52.1430875Z         "impl",
2026-06-21T09:37:52.1430955Z         "unit"
2026-06-21T09:37:52.1431037Z       ],
2026-06-21T09:37:52.1431131Z       "stages": {
2026-06-21T09:37:52.1431210Z         "doc": {
2026-06-21T09:37:52.1431307Z           "complete": false,
2026-06-21T09:37:52.1431388Z           "evidence": []
2026-06-21T09:37:52.1431478Z         },
2026-06-21T09:37:52.1431563Z         "impl": {
2026-06-21T09:37:52.1431655Z           "complete": true,
2026-06-21T09:37:52.1431745Z           "evidence": [
2026-06-21T09:37:52.1431826Z             {
2026-06-21T09:37:52.1431931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1432108Z               "line": 11
2026-06-21T09:37:52.1432197Z             },
2026-06-21T09:37:52.1432266Z             {
2026-06-21T09:37:52.1432374Z               "path": "crates/spt/src/main.rs",
2026-06-21T09:37:52.1432465Z               "line": 8
2026-06-21T09:37:52.1432541Z             }
2026-06-21T09:37:52.1432638Z           ]
2026-06-21T09:37:52.1432717Z         },
2026-06-21T09:37:52.1432798Z         "int": {
2026-06-21T09:37:52.1432880Z           "complete": false,
2026-06-21T09:37:52.1432972Z           "evidence": []
2026-06-21T09:37:52.1433046Z         },
2026-06-21T09:37:52.1433127Z         "unit": {
2026-06-21T09:37:52.1433210Z           "complete": true,
2026-06-21T09:37:52.1433296Z           "evidence": [
2026-06-21T09:37:52.1433380Z             {
2026-06-21T09:37:52.1433481Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1433572Z               "line": 7717
2026-06-21T09:37:52.1433662Z             },
2026-06-21T09:37:52.1433742Z             {
2026-06-21T09:37:52.1433847Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1433938Z               "line": 7759
2026-06-21T09:37:52.1434023Z             },
2026-06-21T09:37:52.1434104Z             {
2026-06-21T09:37:52.1434209Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1434295Z               "line": 7808
2026-06-21T09:37:52.1434371Z             },
2026-06-21T09:37:52.1434461Z             {
2026-06-21T09:37:52.1434563Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1434658Z               "line": 7831
2026-06-21T09:37:52.1434733Z             },
2026-06-21T09:37:52.1434825Z             {
2026-06-21T09:37:52.1434929Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1435015Z               "line": 9807
2026-06-21T09:37:52.1435100Z             },
2026-06-21T09:37:52.1435169Z             {
2026-06-21T09:37:52.1435272Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1435358Z               "line": 9816
2026-06-21T09:37:52.1435450Z             },
2026-06-21T09:37:52.1435531Z             {
2026-06-21T09:37:52.1435634Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1435726Z               "line": 9830
2026-06-21T09:37:52.1435808Z             }
2026-06-21T09:37:52.1435893Z           ]
2026-06-21T09:37:52.1435973Z         }
2026-06-21T09:37:52.1436072Z       }
2026-06-21T09:37:52.1436159Z     },
2026-06-21T09:37:52.1436242Z     {
2026-06-21T09:37:52.1436337Z       "id": "REQ-MSG-3",
2026-06-21T09:37:52.1436704Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T09:37:52.1436795Z       "requiredStages": [
2026-06-21T09:37:52.1436877Z         "impl",
2026-06-21T09:37:52.1436966Z         "unit",
2026-06-21T09:37:52.1437053Z         "int"
2026-06-21T09:37:52.1437124Z       ],
2026-06-21T09:37:52.1437205Z       "stages": {
2026-06-21T09:37:52.1437291Z         "doc": {
2026-06-21T09:37:52.1437392Z           "complete": false,
2026-06-21T09:37:52.1437477Z           "evidence": []
2026-06-21T09:37:52.1437562Z         },
2026-06-21T09:37:52.1437648Z         "impl": {
2026-06-21T09:37:52.1437731Z           "complete": true,
2026-06-21T09:37:52.1437820Z           "evidence": [
2026-06-21T09:37:52.1437896Z             {
2026-06-21T09:37:52.1438097Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T09:37:52.1438182Z               "line": 19
2026-06-21T09:37:52.1438268Z             },
2026-06-21T09:37:52.1438351Z             {
2026-06-21T09:37:52.1438464Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1438545Z               "line": 21
2026-06-21T09:37:52.1438617Z             },
2026-06-21T09:37:52.1438704Z             {
2026-06-21T09:37:52.1438811Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1438901Z               "line": 48
2026-06-21T09:37:52.1439049Z             },
2026-06-21T09:37:52.1439124Z             {
2026-06-21T09:37:52.1439343Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1439434Z               "line": 174
2026-06-21T09:37:52.1439519Z             }
2026-06-21T09:37:52.1439595Z           ]
2026-06-21T09:37:52.1439682Z         },
2026-06-21T09:37:52.1439768Z         "int": {
2026-06-21T09:37:52.1439852Z           "complete": true,
2026-06-21T09:37:52.1439959Z           "evidence": [
2026-06-21T09:37:52.1440034Z             {
2026-06-21T09:37:52.1440163Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:37:52.1440248Z               "line": 10
2026-06-21T09:37:52.1440340Z             },
2026-06-21T09:37:52.1440420Z             {
2026-06-21T09:37:52.1440554Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T09:37:52.1440654Z               "line": 56
2026-06-21T09:37:52.1440735Z             }
2026-06-21T09:37:52.1440821Z           ]
2026-06-21T09:37:52.1440898Z         },
2026-06-21T09:37:52.1440979Z         "unit": {
2026-06-21T09:37:52.1441082Z           "complete": true,
2026-06-21T09:37:52.1441159Z           "evidence": [
2026-06-21T09:37:52.1441247Z             {
2026-06-21T09:37:52.1441350Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1441430Z               "line": 228
2026-06-21T09:37:52.1441515Z             },
2026-06-21T09:37:52.1441592Z             {
2026-06-21T09:37:52.1441709Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1441790Z               "line": 247
2026-06-21T09:37:52.1441876Z             },
2026-06-21T09:37:52.1441953Z             {
2026-06-21T09:37:52.1442066Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1442157Z               "line": 270
2026-06-21T09:37:52.1442234Z             }
2026-06-21T09:37:52.1442325Z           ]
2026-06-21T09:37:52.1442405Z         }
2026-06-21T09:37:52.1442486Z       }
2026-06-21T09:37:52.1442568Z     },
2026-06-21T09:37:52.1442654Z     {
2026-06-21T09:37:52.1442738Z       "id": "REQ-MSG-4",
2026-06-21T09:37:52.1443555Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T09:37:52.1443655Z       "requiredStages": [
2026-06-21T09:37:52.1443745Z         "impl",
2026-06-21T09:37:52.1443827Z         "unit",
2026-06-21T09:37:52.1443912Z         "int"
2026-06-21T09:37:52.1443993Z       ],
2026-06-21T09:37:52.1444080Z       "stages": {
2026-06-21T09:37:52.1444152Z         "doc": {
2026-06-21T09:37:52.1444241Z           "complete": false,
2026-06-21T09:37:52.1444331Z           "evidence": []
2026-06-21T09:37:52.1444416Z         },
2026-06-21T09:37:52.1444494Z         "impl": {
2026-06-21T09:37:52.1444584Z           "complete": true,
2026-06-21T09:37:52.1444674Z           "evidence": [
2026-06-21T09:37:52.1444751Z             {
2026-06-21T09:37:52.1444855Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1444950Z               "line": 19
2026-06-21T09:37:52.1445031Z             },
2026-06-21T09:37:52.1445109Z             {
2026-06-21T09:37:52.1445214Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1445312Z               "line": 46
2026-06-21T09:37:52.1445394Z             },
2026-06-21T09:37:52.1445598Z             {
2026-06-21T09:37:52.1445714Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1445800Z               "line": 532
2026-06-21T09:37:52.1445881Z             },
2026-06-21T09:37:52.1445971Z             {
2026-06-21T09:37:52.1446087Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1446170Z               "line": 3110
2026-06-21T09:37:52.1446261Z             }
2026-06-21T09:37:52.1446339Z           ]
2026-06-21T09:37:52.1446430Z         },
2026-06-21T09:37:52.1446509Z         "int": {
2026-06-21T09:37:52.1446599Z           "complete": true,
2026-06-21T09:37:52.1446695Z           "evidence": [
2026-06-21T09:37:52.1446840Z             {
2026-06-21T09:37:52.1446969Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:37:52.1447050Z               "line": 98
2026-06-21T09:37:52.1447136Z             },
2026-06-21T09:37:52.1447217Z             {
2026-06-21T09:37:52.1447341Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T09:37:52.1447437Z               "line": 128
2026-06-21T09:37:52.1447512Z             }
2026-06-21T09:37:52.1447598Z           ]
2026-06-21T09:37:52.1447666Z         },
2026-06-21T09:37:52.1447756Z         "unit": {
2026-06-21T09:37:52.1447831Z           "complete": true,
2026-06-21T09:37:52.1447923Z           "evidence": [
2026-06-21T09:37:52.1448009Z             {
2026-06-21T09:37:52.1448113Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1448204Z               "line": 68
2026-06-21T09:37:52.1448281Z             },
2026-06-21T09:37:52.1448366Z             {
2026-06-21T09:37:52.1448471Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1448562Z               "line": 79
2026-06-21T09:37:52.1448644Z             },
2026-06-21T09:37:52.1448723Z             {
2026-06-21T09:37:52.1448828Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1448911Z               "line": 90
2026-06-21T09:37:52.1449066Z             },
2026-06-21T09:37:52.1449153Z             {
2026-06-21T09:37:52.1449269Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1449353Z               "line": 151
2026-06-21T09:37:52.1449433Z             }
2026-06-21T09:37:52.1449519Z           ]
2026-06-21T09:37:52.1449600Z         }
2026-06-21T09:37:52.1449684Z       }
2026-06-21T09:37:52.1449764Z     },
2026-06-21T09:37:52.1449850Z     {
2026-06-21T09:37:52.1449946Z       "id": "REQ-MSG-5",
2026-06-21T09:37:52.1450642Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T09:37:52.1450751Z       "requiredStages": [
2026-06-21T09:37:52.1450838Z         "doc",
2026-06-21T09:37:52.1450919Z         "impl",
2026-06-21T09:37:52.1450995Z         "unit"
2026-06-21T09:37:52.1451080Z       ],
2026-06-21T09:37:52.1451177Z       "stages": {
2026-06-21T09:37:52.1451262Z         "doc": {
2026-06-21T09:37:52.1451357Z           "complete": true,
2026-06-21T09:37:52.1451439Z           "evidence": [
2026-06-21T09:37:52.1451520Z             {
2026-06-21T09:37:52.1451624Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1451701Z               "line": 231
2026-06-21T09:37:52.1451787Z             }
2026-06-21T09:37:52.1451868Z           ]
2026-06-21T09:37:52.1451948Z         },
2026-06-21T09:37:52.1452033Z         "impl": {
2026-06-21T09:37:52.1452129Z           "complete": true,
2026-06-21T09:37:52.1452213Z           "evidence": [
2026-06-21T09:37:52.1452289Z             {
2026-06-21T09:37:52.1452398Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.1452489Z               "line": 60
2026-06-21T09:37:52.1452575Z             },
2026-06-21T09:37:52.1452659Z             {
2026-06-21T09:37:52.1455577Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1455693Z               "line": 126
2026-06-21T09:37:52.1455906Z             },
2026-06-21T09:37:52.1455988Z             {
2026-06-21T09:37:52.1456112Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1456207Z               "line": 135
2026-06-21T09:37:52.1456284Z             },
2026-06-21T09:37:52.1456369Z             {
2026-06-21T09:37:52.1456492Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1456575Z               "line": 149
2026-06-21T09:37:52.1456665Z             },
2026-06-21T09:37:52.1456750Z             {
2026-06-21T09:37:52.1456860Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1456947Z               "line": 178
2026-06-21T09:37:52.1457131Z             },
2026-06-21T09:37:52.1457217Z             {
2026-06-21T09:37:52.1457326Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1457405Z               "line": 2802
2026-06-21T09:37:52.1457486Z             }
2026-06-21T09:37:52.1457572Z           ]
2026-06-21T09:37:52.1457649Z         },
2026-06-21T09:37:52.1457739Z         "int": {
2026-06-21T09:37:52.1457829Z           "complete": true,
2026-06-21T09:37:52.1457911Z           "evidence": [
2026-06-21T09:37:52.1457982Z             {
2026-06-21T09:37:52.1458101Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T09:37:52.1458187Z               "line": 19
2026-06-21T09:37:52.1458273Z             }
2026-06-21T09:37:52.1458359Z           ]
2026-06-21T09:37:52.1458444Z         },
2026-06-21T09:37:52.1458517Z         "unit": {
2026-06-21T09:37:52.1458607Z           "complete": true,
2026-06-21T09:37:52.1458692Z           "evidence": [
2026-06-21T09:37:52.1458812Z             {
2026-06-21T09:37:52.1459040Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.1459137Z               "line": 192
2026-06-21T09:37:52.1459223Z             },
2026-06-21T09:37:52.1459302Z             {
2026-06-21T09:37:52.1459461Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:37:52.1459547Z               "line": 154
2026-06-21T09:37:52.1459631Z             },
2026-06-21T09:37:52.1459713Z             {
2026-06-21T09:37:52.1459824Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1459908Z               "line": 122
2026-06-21T09:37:52.1459989Z             },
2026-06-21T09:37:52.1460074Z             {
2026-06-21T09:37:52.1460174Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1460267Z               "line": 452
2026-06-21T09:37:52.1460348Z             },
2026-06-21T09:37:52.1460429Z             {
2026-06-21T09:37:52.1460535Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1460611Z               "line": 501
2026-06-21T09:37:52.1460701Z             },
2026-06-21T09:37:52.1460779Z             {
2026-06-21T09:37:52.1460888Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1460987Z               "line": 517
2026-06-21T09:37:52.1461069Z             },
2026-06-21T09:37:52.1461154Z             {
2026-06-21T09:37:52.1461263Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1461350Z               "line": 536
2026-06-21T09:37:52.1461437Z             },
2026-06-21T09:37:52.1461517Z             {
2026-06-21T09:37:52.1461622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1461698Z               "line": 7660
2026-06-21T09:37:52.1461789Z             }
2026-06-21T09:37:52.1461869Z           ]
2026-06-21T09:37:52.1461946Z         }
2026-06-21T09:37:52.1462028Z       }
2026-06-21T09:37:52.1462118Z     },
2026-06-21T09:37:52.1462193Z     {
2026-06-21T09:37:52.1462284Z       "id": "REQ-MSG-6",
2026-06-21T09:37:52.1463854Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T09:37:52.1464069Z       "requiredStages": [
2026-06-21T09:37:52.1464159Z         "doc",
2026-06-21T09:37:52.1464250Z         "impl",
2026-06-21T09:37:52.1464332Z         "unit"
2026-06-21T09:37:52.1464413Z       ],
2026-06-21T09:37:52.1464503Z       "stages": {
2026-06-21T09:37:52.1464590Z         "doc": {
2026-06-21T09:37:52.1464670Z           "complete": true,
2026-06-21T09:37:52.1464760Z           "evidence": [
2026-06-21T09:37:52.1464841Z             {
2026-06-21T09:37:52.1464938Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1465123Z               "line": 234
2026-06-21T09:37:52.1465205Z             }
2026-06-21T09:37:52.1465281Z           ]
2026-06-21T09:37:52.1465366Z         },
2026-06-21T09:37:52.1465455Z         "impl": {
2026-06-21T09:37:52.1465546Z           "complete": true,
2026-06-21T09:37:52.1465628Z           "evidence": [
2026-06-21T09:37:52.1465718Z             {
2026-06-21T09:37:52.1465953Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1466052Z               "line": 177
2026-06-21T09:37:52.1466127Z             },
2026-06-21T09:37:52.1466214Z             {
2026-06-21T09:37:52.1466339Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1466428Z               "line": 428
2026-06-21T09:37:52.1466515Z             },
2026-06-21T09:37:52.1466596Z             {
2026-06-21T09:37:52.1466728Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1466815Z               "line": 451
2026-06-21T09:37:52.1466906Z             },
2026-06-21T09:37:52.1466986Z             {
2026-06-21T09:37:52.1467101Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.1467187Z               "line": 89
2026-06-21T09:37:52.1467268Z             },
2026-06-21T09:37:52.1467358Z             {
2026-06-21T09:37:52.1467474Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1467564Z               "line": 155
2026-06-21T09:37:52.1467648Z             }
2026-06-21T09:37:52.1467729Z           ]
2026-06-21T09:37:52.1467815Z         },
2026-06-21T09:37:52.1467895Z         "int": {
2026-06-21T09:37:52.1467994Z           "complete": false,
2026-06-21T09:37:52.1468084Z           "evidence": []
2026-06-21T09:37:52.1468166Z         },
2026-06-21T09:37:52.1468252Z         "unit": {
2026-06-21T09:37:52.1468332Z           "complete": true,
2026-06-21T09:37:52.1468418Z           "evidence": [
2026-06-21T09:37:52.1468505Z             {
2026-06-21T09:37:52.1468632Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1468718Z               "line": 1746
2026-06-21T09:37:52.1468796Z             },
2026-06-21T09:37:52.1468876Z             {
2026-06-21T09:37:52.1469077Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.1469162Z               "line": 219
2026-06-21T09:37:52.1469243Z             }
2026-06-21T09:37:52.1469338Z           ]
2026-06-21T09:37:52.1469425Z         }
2026-06-21T09:37:52.1469505Z       }
2026-06-21T09:37:52.1469591Z     },
2026-06-21T09:37:52.1469667Z     {
2026-06-21T09:37:52.1469774Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T09:37:52.1473418Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T09:37:52.1473653Z       "requiredStages": [
2026-06-21T09:37:52.1473733Z         "doc",
2026-06-21T09:37:52.1473818Z         "impl",
2026-06-21T09:37:52.1473901Z         "unit",
2026-06-21T09:37:52.1474095Z         "int"
2026-06-21T09:37:52.1474181Z       ],
2026-06-21T09:37:52.1474267Z       "stages": {
2026-06-21T09:37:52.1474352Z         "doc": {
2026-06-21T09:37:52.1474438Z           "complete": true,
2026-06-21T09:37:52.1474525Z           "evidence": [
2026-06-21T09:37:52.1474610Z             {
2026-06-21T09:37:52.1474845Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T09:37:52.1474930Z               "line": 47
2026-06-21T09:37:52.1475016Z             }
2026-06-21T09:37:52.1475106Z           ]
2026-06-21T09:37:52.1475188Z         },
2026-06-21T09:37:52.1475268Z         "impl": {
2026-06-21T09:37:52.1475363Z           "complete": true,
2026-06-21T09:37:52.1475450Z           "evidence": [
2026-06-21T09:37:52.1475531Z             {
2026-06-21T09:37:52.1475640Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1475726Z               "line": 20
2026-06-21T09:37:52.1475809Z             },
2026-06-21T09:37:52.1475888Z             {
2026-06-21T09:37:52.1476001Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1476087Z               "line": 33
2026-06-21T09:37:52.1476174Z             },
2026-06-21T09:37:52.1476259Z             {
2026-06-21T09:37:52.1476363Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1476455Z               "line": 47
2026-06-21T09:37:52.1476550Z             },
2026-06-21T09:37:52.1476640Z             {
2026-06-21T09:37:52.1476741Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1476832Z               "line": 58
2026-06-21T09:37:52.1476903Z             },
2026-06-21T09:37:52.1476983Z             {
2026-06-21T09:37:52.1477090Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1477170Z               "line": 14
2026-06-21T09:37:52.1477256Z             },
2026-06-21T09:37:52.1477331Z             {
2026-06-21T09:37:52.1477438Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1477532Z               "line": 27
2026-06-21T09:37:52.1477618Z             },
2026-06-21T09:37:52.1477690Z             {
2026-06-21T09:37:52.1477800Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1477889Z               "line": 40
2026-06-21T09:37:52.1477971Z             },
2026-06-21T09:37:52.1478053Z             {
2026-06-21T09:37:52.1478166Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.1478246Z               "line": 92
2026-06-21T09:37:52.1478332Z             },
2026-06-21T09:37:52.1478413Z             {
2026-06-21T09:37:52.1478530Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1478606Z               "line": 143
2026-06-21T09:37:52.1478688Z             },
2026-06-21T09:37:52.1478769Z             {
2026-06-21T09:37:52.1478882Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1479051Z               "line": 216
2026-06-21T09:37:52.1479141Z             },
2026-06-21T09:37:52.1479221Z             {
2026-06-21T09:37:52.1479332Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1479427Z               "line": 533
2026-06-21T09:37:52.1479512Z             },
2026-06-21T09:37:52.1479593Z             {
2026-06-21T09:37:52.1479699Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T09:37:52.1479785Z               "line": 78
2026-06-21T09:37:52.1479975Z             },
2026-06-21T09:37:52.1480061Z             {
2026-06-21T09:37:52.1480175Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1480262Z               "line": 3111
2026-06-21T09:37:52.1480352Z             }
2026-06-21T09:37:52.1480422Z           ]
2026-06-21T09:37:52.1480508Z         },
2026-06-21T09:37:52.1480591Z         "int": {
2026-06-21T09:37:52.1480681Z           "complete": true,
2026-06-21T09:37:52.1480771Z           "evidence": [
2026-06-21T09:37:52.1480853Z             {
2026-06-21T09:37:52.1480987Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T09:37:52.1481071Z               "line": 15
2026-06-21T09:37:52.1481251Z             }
2026-06-21T09:37:52.1481337Z           ]
2026-06-21T09:37:52.1481411Z         },
2026-06-21T09:37:52.1481492Z         "unit": {
2026-06-21T09:37:52.1481578Z           "complete": true,
2026-06-21T09:37:52.1481660Z           "evidence": [
2026-06-21T09:37:52.1481735Z             {
2026-06-21T09:37:52.1481845Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1481928Z               "line": 102
2026-06-21T09:37:52.1482013Z             },
2026-06-21T09:37:52.1482098Z             {
2026-06-21T09:37:52.1482204Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T09:37:52.1482289Z               "line": 137
2026-06-21T09:37:52.1482379Z             },
2026-06-21T09:37:52.1482460Z             {
2026-06-21T09:37:52.1482571Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1482656Z               "line": 98
2026-06-21T09:37:52.1482742Z             },
2026-06-21T09:37:52.1482814Z             {
2026-06-21T09:37:52.1482928Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1483028Z               "line": 106
2026-06-21T09:37:52.1483104Z             },
2026-06-21T09:37:52.1483182Z             {
2026-06-21T09:37:52.1483280Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1483371Z               "line": 113
2026-06-21T09:37:52.1483449Z             },
2026-06-21T09:37:52.1483530Z             {
2026-06-21T09:37:52.1483638Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T09:37:52.1483723Z               "line": 122
2026-06-21T09:37:52.1483809Z             }
2026-06-21T09:37:52.1483889Z           ]
2026-06-21T09:37:52.1483969Z         }
2026-06-21T09:37:52.1484054Z       }
2026-06-21T09:37:52.1484141Z     },
2026-06-21T09:37:52.1484223Z     {
2026-06-21T09:37:52.1484336Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T09:37:52.1489349Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T09:37:52.1489772Z       "requiredStages": [
2026-06-21T09:37:52.1489863Z         "doc",
2026-06-21T09:37:52.1489940Z         "impl",
2026-06-21T09:37:52.1490030Z         "unit",
2026-06-21T09:37:52.1490110Z         "int"
2026-06-21T09:37:52.1490198Z       ],
2026-06-21T09:37:52.1490278Z       "stages": {
2026-06-21T09:37:52.1490373Z         "doc": {
2026-06-21T09:37:52.1490487Z           "complete": true,
2026-06-21T09:37:52.1490569Z           "evidence": [
2026-06-21T09:37:52.1490749Z             {
2026-06-21T09:37:52.1490894Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T09:37:52.1490978Z               "line": 277
2026-06-21T09:37:52.1491064Z             },
2026-06-21T09:37:52.1491152Z             {
2026-06-21T09:37:52.1491255Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.1491346Z               "line": 198
2026-06-21T09:37:52.1491432Z             }
2026-06-21T09:37:52.1491514Z           ]
2026-06-21T09:37:52.1491589Z         },
2026-06-21T09:37:52.1491664Z         "impl": {
2026-06-21T09:37:52.1491759Z           "complete": true,
2026-06-21T09:37:52.1491845Z           "evidence": [
2026-06-21T09:37:52.1491929Z             {
2026-06-21T09:37:52.1492057Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.1492148Z               "line": 1060
2026-06-21T09:37:52.1492230Z             },
2026-06-21T09:37:52.1492315Z             {
2026-06-21T09:37:52.1492449Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1492544Z               "line": 23
2026-06-21T09:37:52.1492625Z             },
2026-06-21T09:37:52.1492701Z             {
2026-06-21T09:37:52.1492817Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1492912Z               "line": 91
2026-06-21T09:37:52.1493001Z             },
2026-06-21T09:37:52.1493122Z             {
2026-06-21T09:37:52.1493255Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1493340Z               "line": 239
2026-06-21T09:37:52.1493427Z             },
2026-06-21T09:37:52.1493507Z             {
2026-06-21T09:37:52.1493655Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1493746Z               "line": 287
2026-06-21T09:37:52.1493827Z             },
2026-06-21T09:37:52.1493912Z             {
2026-06-21T09:37:52.1494033Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1494114Z               "line": 311
2026-06-21T09:37:52.1494193Z             },
2026-06-21T09:37:52.1494283Z             {
2026-06-21T09:37:52.1494412Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1494496Z               "line": 60
2026-06-21T09:37:52.1494576Z             },
2026-06-21T09:37:52.1494658Z             {
2026-06-21T09:37:52.1494778Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1494867Z               "line": 889
2026-06-21T09:37:52.1494953Z             }
2026-06-21T09:37:52.1495040Z           ]
2026-06-21T09:37:52.1495111Z         },
2026-06-21T09:37:52.1495201Z         "int": {
2026-06-21T09:37:52.1495277Z           "complete": true,
2026-06-21T09:37:52.1495374Z           "evidence": [
2026-06-21T09:37:52.1495450Z             {
2026-06-21T09:37:52.1495602Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.1495689Z               "line": 1089
2026-06-21T09:37:52.1495768Z             },
2026-06-21T09:37:52.1495859Z             {
2026-06-21T09:37:52.1496004Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.1496098Z               "line": 1194
2026-06-21T09:37:52.1496178Z             },
2026-06-21T09:37:52.1496270Z             {
2026-06-21T09:37:52.1496412Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.1496585Z               "line": 1262
2026-06-21T09:37:52.1496671Z             },
2026-06-21T09:37:52.1496750Z             {
2026-06-21T09:37:52.1496900Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T09:37:52.1496986Z               "line": 1355
2026-06-21T09:37:52.1497064Z             }
2026-06-21T09:37:52.1497145Z           ]
2026-06-21T09:37:52.1497241Z         },
2026-06-21T09:37:52.1497333Z         "unit": {
2026-06-21T09:37:52.1497427Z           "complete": true,
2026-06-21T09:37:52.1497517Z           "evidence": [
2026-06-21T09:37:52.1497613Z             {
2026-06-21T09:37:52.1497799Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.1497961Z               "line": 270
2026-06-21T09:37:52.1498051Z             },
2026-06-21T09:37:52.1498147Z             {
2026-06-21T09:37:52.1498285Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1498380Z               "line": 350
2026-06-21T09:37:52.1498471Z             },
2026-06-21T09:37:52.1498539Z             {
2026-06-21T09:37:52.1498709Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1498796Z               "line": 381
2026-06-21T09:37:52.1498896Z             },
2026-06-21T09:37:52.1499183Z             {
2026-06-21T09:37:52.1499324Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1499481Z               "line": 411
2026-06-21T09:37:52.1499571Z             },
2026-06-21T09:37:52.1499684Z             {
2026-06-21T09:37:52.1499798Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T09:37:52.1499890Z               "line": 440
2026-06-21T09:37:52.1499975Z             },
2026-06-21T09:37:52.1500060Z             {
2026-06-21T09:37:52.1500171Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1500251Z               "line": 1181
2026-06-21T09:37:52.1500337Z             }
2026-06-21T09:37:52.1500418Z           ]
2026-06-21T09:37:52.1500509Z         }
2026-06-21T09:37:52.1500580Z       }
2026-06-21T09:37:52.1500670Z     },
2026-06-21T09:37:52.1500748Z     {
2026-06-21T09:37:52.1500828Z       "id": "REQ-NET-1",
2026-06-21T09:37:52.1500999Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T09:37:52.1501082Z       "requiredStages": [
2026-06-21T09:37:52.1501171Z         "impl",
2026-06-21T09:37:52.1501257Z         "unit",
2026-06-21T09:37:52.1501343Z         "int"
2026-06-21T09:37:52.1501425Z       ],
2026-06-21T09:37:52.1501505Z       "stages": {
2026-06-21T09:37:52.1501591Z         "doc": {
2026-06-21T09:37:52.1501682Z           "complete": false,
2026-06-21T09:37:52.1501783Z           "evidence": []
2026-06-21T09:37:52.1501863Z         },
2026-06-21T09:37:52.1501949Z         "impl": {
2026-06-21T09:37:52.1502041Z           "complete": true,
2026-06-21T09:37:52.1502130Z           "evidence": [
2026-06-21T09:37:52.1502215Z             {
2026-06-21T09:37:52.1502334Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1502424Z               "line": 54
2026-06-21T09:37:52.1502532Z             },
2026-06-21T09:37:52.1502617Z             {
2026-06-21T09:37:52.1502738Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1502823Z               "line": 594
2026-06-21T09:37:52.1502908Z             },
2026-06-21T09:37:52.1502990Z             {
2026-06-21T09:37:52.1503104Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T09:37:52.1503180Z               "line": 130
2026-06-21T09:37:52.1503266Z             },
2026-06-21T09:37:52.1503348Z             {
2026-06-21T09:37:52.1503462Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1503551Z               "line": 97
2026-06-21T09:37:52.1503624Z             },
2026-06-21T09:37:52.1503715Z             {
2026-06-21T09:37:52.1503829Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1503915Z               "line": 159
2026-06-21T09:37:52.1504100Z             },
2026-06-21T09:37:52.1504172Z             {
2026-06-21T09:37:52.1504297Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1504382Z               "line": 175
2026-06-21T09:37:52.1504473Z             },
2026-06-21T09:37:52.1504549Z             {
2026-06-21T09:37:52.1504664Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1504758Z               "line": 190
2026-06-21T09:37:52.1504834Z             },
2026-06-21T09:37:52.1504920Z             {
2026-06-21T09:37:52.1505024Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1505108Z               "line": 271
2026-06-21T09:37:52.1505300Z             },
2026-06-21T09:37:52.1505385Z             {
2026-06-21T09:37:52.1505504Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1505591Z               "line": 306
2026-06-21T09:37:52.1505676Z             },
2026-06-21T09:37:52.1505756Z             {
2026-06-21T09:37:52.1505881Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1505981Z               "line": 312
2026-06-21T09:37:52.1506066Z             },
2026-06-21T09:37:52.1506152Z             {
2026-06-21T09:37:52.1506267Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1506358Z               "line": 318
2026-06-21T09:37:52.1506438Z             },
2026-06-21T09:37:52.1506525Z             {
2026-06-21T09:37:52.1506638Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1506715Z               "line": 334
2026-06-21T09:37:52.1506791Z             },
2026-06-21T09:37:52.1506873Z             {
2026-06-21T09:37:52.1506991Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1507077Z               "line": 354
2026-06-21T09:37:52.1507159Z             },
2026-06-21T09:37:52.1507245Z             {
2026-06-21T09:37:52.1507354Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:37:52.1507446Z               "line": 35
2026-06-21T09:37:52.1507522Z             },
2026-06-21T09:37:52.1507606Z             {
2026-06-21T09:37:52.1507710Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:37:52.1507796Z               "line": 85
2026-06-21T09:37:52.1507878Z             },
2026-06-21T09:37:52.1507958Z             {
2026-06-21T09:37:52.1508077Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.1508165Z               "line": 138
2026-06-21T09:37:52.1508241Z             },
2026-06-21T09:37:52.1508311Z             {
2026-06-21T09:37:52.1508422Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1508507Z               "line": 2953
2026-06-21T09:37:52.1508588Z             },
2026-06-21T09:37:52.1508673Z             {
2026-06-21T09:37:52.1508780Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1508860Z               "line": 17
2026-06-21T09:37:52.1509046Z             }
2026-06-21T09:37:52.1509123Z           ]
2026-06-21T09:37:52.1509208Z         },
2026-06-21T09:37:52.1509313Z         "int": {
2026-06-21T09:37:52.1509409Z           "complete": true,
2026-06-21T09:37:52.1509489Z           "evidence": [
2026-06-21T09:37:52.1509570Z             {
2026-06-21T09:37:52.1509680Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1509767Z               "line": 341
2026-06-21T09:37:52.1509851Z             },
2026-06-21T09:37:52.1509936Z             {
2026-06-21T09:37:52.1510056Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1510135Z               "line": 675
2026-06-21T09:37:52.1510220Z             },
2026-06-21T09:37:52.1510291Z             {
2026-06-21T09:37:52.1510406Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1510488Z               "line": 973
2026-06-21T09:37:52.1510568Z             }
2026-06-21T09:37:52.1510654Z           ]
2026-06-21T09:37:52.1510736Z         },
2026-06-21T09:37:52.1510830Z         "unit": {
2026-06-21T09:37:52.1510911Z           "complete": true,
2026-06-21T09:37:52.1511107Z           "evidence": [
2026-06-21T09:37:52.1511188Z             {
2026-06-21T09:37:52.1511293Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1511388Z               "line": 651
2026-06-21T09:37:52.1511469Z             },
2026-06-21T09:37:52.1511550Z             {
2026-06-21T09:37:52.1511656Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1511746Z               "line": 686
2026-06-21T09:37:52.1511832Z             },
2026-06-21T09:37:52.1511913Z             {
2026-06-21T09:37:52.1512037Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1512218Z               "line": 940
2026-06-21T09:37:52.1512301Z             },
2026-06-21T09:37:52.1512380Z             {
2026-06-21T09:37:52.1512495Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T09:37:52.1512586Z               "line": 201
2026-06-21T09:37:52.1512662Z             },
2026-06-21T09:37:52.1512742Z             {
2026-06-21T09:37:52.1512865Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1512956Z               "line": 442
2026-06-21T09:37:52.1513035Z             },
2026-06-21T09:37:52.1513116Z             {
2026-06-21T09:37:52.1513235Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1513317Z               "line": 456
2026-06-21T09:37:52.1513412Z             },
2026-06-21T09:37:52.1513492Z             {
2026-06-21T09:37:52.1513603Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1513684Z               "line": 475
2026-06-21T09:37:52.1513764Z             },
2026-06-21T09:37:52.1513850Z             {
2026-06-21T09:37:52.1513979Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:37:52.1514069Z               "line": 120
2026-06-21T09:37:52.1514151Z             },
2026-06-21T09:37:52.1514237Z             {
2026-06-21T09:37:52.1514356Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T09:37:52.1514436Z               "line": 163
2026-06-21T09:37:52.1514524Z             },
2026-06-21T09:37:52.1514595Z             {
2026-06-21T09:37:52.1514708Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T09:37:52.1514790Z               "line": 530
2026-06-21T09:37:52.1514876Z             },
2026-06-21T09:37:52.1514961Z             {
2026-06-21T09:37:52.1515066Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1515153Z               "line": 616
2026-06-21T09:37:52.1515239Z             },
2026-06-21T09:37:52.1515323Z             {
2026-06-21T09:37:52.1515427Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1515518Z               "line": 1006
2026-06-21T09:37:52.1515593Z             }
2026-06-21T09:37:52.1515663Z           ]
2026-06-21T09:37:52.1515744Z         }
2026-06-21T09:37:52.1515816Z       }
2026-06-21T09:37:52.1515898Z     },
2026-06-21T09:37:52.1515983Z     {
2026-06-21T09:37:52.1516078Z       "id": "REQ-NET-2",
2026-06-21T09:37:52.1516265Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T09:37:52.1516359Z       "requiredStages": [
2026-06-21T09:37:52.1516446Z         "impl"
2026-06-21T09:37:52.1516532Z       ],
2026-06-21T09:37:52.1516622Z       "stages": {
2026-06-21T09:37:52.1516703Z         "doc": {
2026-06-21T09:37:52.1516799Z           "complete": false,
2026-06-21T09:37:52.1516888Z           "evidence": []
2026-06-21T09:37:52.1516965Z         },
2026-06-21T09:37:52.1517056Z         "impl": {
2026-06-21T09:37:52.1517138Z           "complete": true,
2026-06-21T09:37:52.1517223Z           "evidence": [
2026-06-21T09:37:52.1517298Z             {
2026-06-21T09:37:52.1517424Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.1517518Z               "line": 57
2026-06-21T09:37:52.1517599Z             },
2026-06-21T09:37:52.1517681Z             {
2026-06-21T09:37:52.1517791Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1517880Z               "line": 71
2026-06-21T09:37:52.1518044Z             },
2026-06-21T09:37:52.1518129Z             {
2026-06-21T09:37:52.1518252Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1518333Z               "line": 81
2026-06-21T09:37:52.1518410Z             },
2026-06-21T09:37:52.1518496Z             {
2026-06-21T09:37:52.1518614Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1518700Z               "line": 159
2026-06-21T09:37:52.1518781Z             },
2026-06-21T09:37:52.1518862Z             {
2026-06-21T09:37:52.1519039Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1519130Z               "line": 175
2026-06-21T09:37:52.1519340Z             },
2026-06-21T09:37:52.1519420Z             {
2026-06-21T09:37:52.1519543Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T09:37:52.1519621Z               "line": 190
2026-06-21T09:37:52.1519702Z             }
2026-06-21T09:37:52.1519777Z           ]
2026-06-21T09:37:52.1519868Z         },
2026-06-21T09:37:52.1519945Z         "int": {
2026-06-21T09:37:52.1520040Z           "complete": false,
2026-06-21T09:37:52.1520130Z           "evidence": []
2026-06-21T09:37:52.1520202Z         },
2026-06-21T09:37:52.1520284Z         "unit": {
2026-06-21T09:37:52.1520374Z           "complete": true,
2026-06-21T09:37:52.1520454Z           "evidence": [
2026-06-21T09:37:52.1520534Z             {
2026-06-21T09:37:52.1520659Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.1520747Z               "line": 402
2026-06-21T09:37:52.1520819Z             }
2026-06-21T09:37:52.1520904Z           ]
2026-06-21T09:37:52.1520986Z         }
2026-06-21T09:37:52.1521066Z       }
2026-06-21T09:37:52.1521147Z     },
2026-06-21T09:37:52.1521228Z     {
2026-06-21T09:37:52.1521310Z       "id": "REQ-NET-3",
2026-06-21T09:37:52.1521499Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T09:37:52.1521582Z       "requiredStages": [
2026-06-21T09:37:52.1521672Z         "impl",
2026-06-21T09:37:52.1521762Z         "unit"
2026-06-21T09:37:52.1521834Z       ],
2026-06-21T09:37:52.1521930Z       "stages": {
2026-06-21T09:37:52.1522011Z         "doc": {
2026-06-21T09:37:52.1522091Z           "complete": false,
2026-06-21T09:37:52.1522183Z           "evidence": []
2026-06-21T09:37:52.1522259Z         },
2026-06-21T09:37:52.1522345Z         "impl": {
2026-06-21T09:37:52.1522435Z           "complete": true,
2026-06-21T09:37:52.1522531Z           "evidence": [
2026-06-21T09:37:52.1522602Z             {
2026-06-21T09:37:52.1522721Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1522808Z               "line": 39
2026-06-21T09:37:52.1522889Z             },
2026-06-21T09:37:52.1522973Z             {
2026-06-21T09:37:52.1523088Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1523175Z               "line": 182
2026-06-21T09:37:52.1523260Z             },
2026-06-21T09:37:52.1523340Z             {
2026-06-21T09:37:52.1523449Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T09:37:52.1523530Z               "line": 333
2026-06-21T09:37:52.1523614Z             },
2026-06-21T09:37:52.1523695Z             {
2026-06-21T09:37:52.1523800Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:37:52.1523891Z               "line": 36
2026-06-21T09:37:52.1523972Z             },
2026-06-21T09:37:52.1524057Z             {
2026-06-21T09:37:52.1524177Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1524263Z               "line": 158
2026-06-21T09:37:52.1524339Z             },
2026-06-21T09:37:52.1524415Z             {
2026-06-21T09:37:52.1524539Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1524620Z               "line": 238
2026-06-21T09:37:52.1524711Z             },
2026-06-21T09:37:52.1524793Z             {
2026-06-21T09:37:52.1524911Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1524996Z               "line": 259
2026-06-21T09:37:52.1525183Z             },
2026-06-21T09:37:52.1525268Z             {
2026-06-21T09:37:52.1525384Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1525474Z               "line": 317
2026-06-21T09:37:52.1525559Z             },
2026-06-21T09:37:52.1525640Z             {
2026-06-21T09:37:52.1525756Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1525836Z               "line": 336
2026-06-21T09:37:52.1525925Z             },
2026-06-21T09:37:52.1526006Z             {
2026-06-21T09:37:52.1526130Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1526285Z               "line": 374
2026-06-21T09:37:52.1526372Z             },
2026-06-21T09:37:52.1526453Z             {
2026-06-21T09:37:52.1526576Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1526667Z               "line": 419
2026-06-21T09:37:52.1526749Z             },
2026-06-21T09:37:52.1526834Z             {
2026-06-21T09:37:52.1526948Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1527035Z               "line": 432
2026-06-21T09:37:52.1527116Z             },
2026-06-21T09:37:52.1527206Z             {
2026-06-21T09:37:52.1527326Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.1527411Z               "line": 29
2026-06-21T09:37:52.1527497Z             },
2026-06-21T09:37:52.1527578Z             {
2026-06-21T09:37:52.1527693Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.1527783Z               "line": 72
2026-06-21T09:37:52.1527868Z             },
2026-06-21T09:37:52.1531028Z             {
2026-06-21T09:37:52.1531171Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.1531275Z               "line": 123
2026-06-21T09:37:52.1531350Z             }
2026-06-21T09:37:52.1531435Z           ]
2026-06-21T09:37:52.1531517Z         },
2026-06-21T09:37:52.1531604Z         "int": {
2026-06-21T09:37:52.1531712Z           "complete": false,
2026-06-21T09:37:52.1531803Z           "evidence": []
2026-06-21T09:37:52.1531880Z         },
2026-06-21T09:37:52.1531970Z         "unit": {
2026-06-21T09:37:52.1532069Z           "complete": true,
2026-06-21T09:37:52.1532171Z           "evidence": [
2026-06-21T09:37:52.1532252Z             {
2026-06-21T09:37:52.1532380Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:37:52.1532462Z               "line": 223
2026-06-21T09:37:52.1532547Z             },
2026-06-21T09:37:52.1532623Z             {
2026-06-21T09:37:52.1532748Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:37:52.1532843Z               "line": 351
2026-06-21T09:37:52.1532924Z             },
2026-06-21T09:37:52.1533000Z             {
2026-06-21T09:37:52.1533115Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T09:37:52.1533204Z               "line": 504
2026-06-21T09:37:52.1533285Z             },
2026-06-21T09:37:52.1533368Z             {
2026-06-21T09:37:52.1533482Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:37:52.1533567Z               "line": 93
2026-06-21T09:37:52.1533653Z             },
2026-06-21T09:37:52.1533735Z             {
2026-06-21T09:37:52.1533843Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T09:37:52.1533934Z               "line": 142
2026-06-21T09:37:52.1534019Z             },
2026-06-21T09:37:52.1534105Z             {
2026-06-21T09:37:52.1534227Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.1534317Z               "line": 315
2026-06-21T09:37:52.1534389Z             },
2026-06-21T09:37:52.1534475Z             {
2026-06-21T09:37:52.1534598Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.1534690Z               "line": 355
2026-06-21T09:37:52.1534770Z             },
2026-06-21T09:37:52.1534851Z             {
2026-06-21T09:37:52.1534976Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T09:37:52.1535223Z               "line": 494
2026-06-21T09:37:52.1535314Z             }
2026-06-21T09:37:52.1535390Z           ]
2026-06-21T09:37:52.1535476Z         }
2026-06-21T09:37:52.1535557Z       }
2026-06-21T09:37:52.1535639Z     },
2026-06-21T09:37:52.1535719Z     {
2026-06-21T09:37:52.1535819Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T09:37:52.1536058Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T09:37:52.1536153Z       "requiredStages": [
2026-06-21T09:37:52.1536245Z         "impl",
2026-06-21T09:37:52.1536335Z         "unit"
2026-06-21T09:37:52.1536419Z       ],
2026-06-21T09:37:52.1536509Z       "stages": {
2026-06-21T09:37:52.1536718Z         "doc": {
2026-06-21T09:37:52.1536817Z           "complete": false,
2026-06-21T09:37:52.1536908Z           "evidence": []
2026-06-21T09:37:52.1536990Z         },
2026-06-21T09:37:52.1537079Z         "impl": {
2026-06-21T09:37:52.1537169Z           "complete": true,
2026-06-21T09:37:52.1537271Z           "evidence": [
2026-06-21T09:37:52.1537361Z             {
2026-06-21T09:37:52.1537489Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1537576Z               "line": 60
2026-06-21T09:37:52.1537666Z             },
2026-06-21T09:37:52.1537747Z             {
2026-06-21T09:37:52.1537867Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1537947Z               "line": 68
2026-06-21T09:37:52.1538028Z             },
2026-06-21T09:37:52.1538114Z             {
2026-06-21T09:37:52.1538220Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1538314Z               "line": 86
2026-06-21T09:37:52.1538410Z             },
2026-06-21T09:37:52.1538491Z             {
2026-06-21T09:37:52.1538605Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1538686Z               "line": 120
2026-06-21T09:37:52.1538772Z             },
2026-06-21T09:37:52.1538855Z             {
2026-06-21T09:37:52.1539049Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1539136Z               "line": 127
2026-06-21T09:37:52.1539217Z             },
2026-06-21T09:37:52.1539305Z             {
2026-06-21T09:37:52.1539453Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1539540Z               "line": 143
2026-06-21T09:37:52.1539630Z             },
2026-06-21T09:37:52.1539710Z             {
2026-06-21T09:37:52.1539830Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:37:52.1539911Z               "line": 16
2026-06-21T09:37:52.1539997Z             }
2026-06-21T09:37:52.1540078Z           ]
2026-06-21T09:37:52.1540169Z         },
2026-06-21T09:37:52.1540264Z         "int": {
2026-06-21T09:37:52.1540349Z           "complete": false,
2026-06-21T09:37:52.1540431Z           "evidence": []
2026-06-21T09:37:52.1540517Z         },
2026-06-21T09:37:52.1540607Z         "unit": {
2026-06-21T09:37:52.1540702Z           "complete": true,
2026-06-21T09:37:52.1540784Z           "evidence": [
2026-06-21T09:37:52.1540869Z             {
2026-06-21T09:37:52.1540983Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1541071Z               "line": 199
2026-06-21T09:37:52.1541151Z             },
2026-06-21T09:37:52.1541236Z             {
2026-06-21T09:37:52.1541342Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1541423Z               "line": 218
2026-06-21T09:37:52.1541508Z             },
2026-06-21T09:37:52.1541588Z             {
2026-06-21T09:37:52.1541712Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1541798Z               "line": 234
2026-06-21T09:37:52.1541877Z             },
2026-06-21T09:37:52.1541957Z             {
2026-06-21T09:37:52.1542072Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T09:37:52.1542159Z               "line": 256
2026-06-21T09:37:52.1542243Z             },
2026-06-21T09:37:52.1542325Z             {
2026-06-21T09:37:52.1542426Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:37:52.1542625Z               "line": 124
2026-06-21T09:37:52.1542698Z             },
2026-06-21T09:37:52.1542787Z             {
2026-06-21T09:37:52.1542901Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:37:52.1542979Z               "line": 140
2026-06-21T09:37:52.1543069Z             },
2026-06-21T09:37:52.1543141Z             {
2026-06-21T09:37:52.1543260Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T09:37:52.1543346Z               "line": 155
2026-06-21T09:37:52.1543422Z             }
2026-06-21T09:37:52.1543517Z           ]
2026-06-21T09:37:52.1543593Z         }
2026-06-21T09:37:52.1543774Z       }
2026-06-21T09:37:52.1543855Z     },
2026-06-21T09:37:52.1543943Z     {
2026-06-21T09:37:52.1544028Z       "id": "REQ-NOTIF-1",
2026-06-21T09:37:52.1544376Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T09:37:52.1544479Z       "requiredStages": [
2026-06-21T09:37:52.1544560Z         "impl",
2026-06-21T09:37:52.1544651Z         "unit",
2026-06-21T09:37:52.1544735Z         "int"
2026-06-21T09:37:52.1544810Z       ],
2026-06-21T09:37:52.1544892Z       "stages": {
2026-06-21T09:37:52.1544983Z         "doc": {
2026-06-21T09:37:52.1545078Z           "complete": false,
2026-06-21T09:37:52.1545163Z           "evidence": []
2026-06-21T09:37:52.1545245Z         },
2026-06-21T09:37:52.1545330Z         "impl": {
2026-06-21T09:37:52.1545430Z           "complete": true,
2026-06-21T09:37:52.1545511Z           "evidence": [
2026-06-21T09:37:52.1545594Z             {
2026-06-21T09:37:52.1545712Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1545807Z               "line": 514
2026-06-21T09:37:52.1545894Z             },
2026-06-21T09:37:52.1545974Z             {
2026-06-21T09:37:52.1546088Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1546175Z               "line": 30
2026-06-21T09:37:52.1546270Z             },
2026-06-21T09:37:52.1546355Z             {
2026-06-21T09:37:52.1546465Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1546557Z               "line": 69
2026-06-21T09:37:52.1546641Z             },
2026-06-21T09:37:52.1546732Z             {
2026-06-21T09:37:52.1546843Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1546937Z               "line": 93
2026-06-21T09:37:52.1547022Z             },
2026-06-21T09:37:52.1547107Z             {
2026-06-21T09:37:52.1547213Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1547296Z               "line": 107
2026-06-21T09:37:52.1547387Z             },
2026-06-21T09:37:52.1547492Z             {
2026-06-21T09:37:52.1547616Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1547739Z               "line": 142
2026-06-21T09:37:52.1547817Z             },
2026-06-21T09:37:52.1547902Z             {
2026-06-21T09:37:52.1548016Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1548102Z               "line": 187
2026-06-21T09:37:52.1548183Z             },
2026-06-21T09:37:52.1548264Z             {
2026-06-21T09:37:52.1548378Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1548466Z               "line": 258
2026-06-21T09:37:52.1548550Z             },
2026-06-21T09:37:52.1548631Z             {
2026-06-21T09:37:52.1548737Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1548822Z               "line": 372
2026-06-21T09:37:52.1548903Z             },
2026-06-21T09:37:52.1549081Z             {
2026-06-21T09:37:52.1549184Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1549275Z               "line": 479
2026-06-21T09:37:52.1549362Z             },
2026-06-21T09:37:52.1549434Z             {
2026-06-21T09:37:52.1549556Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1549638Z               "line": 24
2026-06-21T09:37:52.1549842Z             },
2026-06-21T09:37:52.1549927Z             {
2026-06-21T09:37:52.1550052Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1550138Z               "line": 34
2026-06-21T09:37:52.1550223Z             },
2026-06-21T09:37:52.1550299Z             {
2026-06-21T09:37:52.1550410Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1550500Z               "line": 60
2026-06-21T09:37:52.1550580Z             },
2026-06-21T09:37:52.1550672Z             {
2026-06-21T09:37:52.1550786Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1550871Z               "line": 82
2026-06-21T09:37:52.1551053Z             },
2026-06-21T09:37:52.1551134Z             {
2026-06-21T09:37:52.1551252Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1551340Z               "line": 94
2026-06-21T09:37:52.1551415Z             },
2026-06-21T09:37:52.1551501Z             {
2026-06-21T09:37:52.1551621Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.1551726Z               "line": 96
2026-06-21T09:37:52.1551805Z             },
2026-06-21T09:37:52.1551887Z             {
2026-06-21T09:37:52.1552012Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T09:37:52.1552106Z               "line": 44
2026-06-21T09:37:52.1552182Z             },
2026-06-21T09:37:52.1552263Z             {
2026-06-21T09:37:52.1552390Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:37:52.1552470Z               "line": 20
2026-06-21T09:37:52.1552560Z             },
2026-06-21T09:37:52.1552642Z             {
2026-06-21T09:37:52.1552752Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:37:52.1552851Z               "line": 30
2026-06-21T09:37:52.1552933Z             },
2026-06-21T09:37:52.1553014Z             {
2026-06-21T09:37:52.1553118Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:37:52.1553209Z               "line": 50
2026-06-21T09:37:52.1553291Z             },
2026-06-21T09:37:52.1553381Z             {
2026-06-21T09:37:52.1553500Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1553582Z               "line": 28
2026-06-21T09:37:52.1553667Z             },
2026-06-21T09:37:52.1553753Z             {
2026-06-21T09:37:52.1553868Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1553949Z               "line": 126
2026-06-21T09:37:52.1554035Z             },
2026-06-21T09:37:52.1554120Z             {
2026-06-21T09:37:52.1554231Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1554320Z               "line": 161
2026-06-21T09:37:52.1554406Z             },
2026-06-21T09:37:52.1554488Z             {
2026-06-21T09:37:52.1554598Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1554682Z               "line": 202
2026-06-21T09:37:52.1554764Z             },
2026-06-21T09:37:52.1554846Z             {
2026-06-21T09:37:52.1554950Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1555044Z               "line": 213
2026-06-21T09:37:52.1555125Z             },
2026-06-21T09:37:52.1555201Z             {
2026-06-21T09:37:52.1555304Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1555394Z               "line": 238
2026-06-21T09:37:52.1555481Z             },
2026-06-21T09:37:52.1555562Z             {
2026-06-21T09:37:52.1555671Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1555761Z               "line": 261
2026-06-21T09:37:52.1555844Z             },
2026-06-21T09:37:52.1555934Z             {
2026-06-21T09:37:52.1556057Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1556154Z               "line": 86
2026-06-21T09:37:52.1556244Z             }
2026-06-21T09:37:52.1556324Z           ]
2026-06-21T09:37:52.1556410Z         },
2026-06-21T09:37:52.1556492Z         "int": {
2026-06-21T09:37:52.1556592Z           "complete": true,
2026-06-21T09:37:52.1556764Z           "evidence": [
2026-06-21T09:37:52.1556840Z             {
2026-06-21T09:37:52.1556972Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1557055Z               "line": 285
2026-06-21T09:37:52.1557141Z             },
2026-06-21T09:37:52.1557215Z             {
2026-06-21T09:37:52.1557326Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T09:37:52.1557418Z               "line": 145
2026-06-21T09:37:52.1557493Z             },
2026-06-21T09:37:52.1557577Z             {
2026-06-21T09:37:52.1557697Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1557783Z               "line": 684
2026-06-21T09:37:52.1557937Z             },
2026-06-21T09:37:52.1558019Z             {
2026-06-21T09:37:52.1558134Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1558228Z               "line": 1102
2026-06-21T09:37:52.1558314Z             }
2026-06-21T09:37:52.1558392Z           ]
2026-06-21T09:37:52.1558472Z         },
2026-06-21T09:37:52.1558562Z         "unit": {
2026-06-21T09:37:52.1558653Z           "complete": true,
2026-06-21T09:37:52.1558744Z           "evidence": [
2026-06-21T09:37:52.1558825Z             {
2026-06-21T09:37:52.1559035Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1559125Z               "line": 572
2026-06-21T09:37:52.1559215Z             },
2026-06-21T09:37:52.1559297Z             {
2026-06-21T09:37:52.1559406Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1559501Z               "line": 636
2026-06-21T09:37:52.1559582Z             },
2026-06-21T09:37:52.1559665Z             {
2026-06-21T09:37:52.1559782Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1559864Z               "line": 740
2026-06-21T09:37:52.1559946Z             },
2026-06-21T09:37:52.1560027Z             {
2026-06-21T09:37:52.1560140Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1560227Z               "line": 772
2026-06-21T09:37:52.1560304Z             },
2026-06-21T09:37:52.1560388Z             {
2026-06-21T09:37:52.1560497Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1560587Z               "line": 840
2026-06-21T09:37:52.1560679Z             },
2026-06-21T09:37:52.1560754Z             {
2026-06-21T09:37:52.1560864Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1560951Z               "line": 898
2026-06-21T09:37:52.1561032Z             },
2026-06-21T09:37:52.1561112Z             {
2026-06-21T09:37:52.1561227Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1561317Z               "line": 1173
2026-06-21T09:37:52.1561412Z             },
2026-06-21T09:37:52.1561493Z             {
2026-06-21T09:37:52.1561613Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1561699Z               "line": 157
2026-06-21T09:37:52.1561789Z             },
2026-06-21T09:37:52.1561871Z             {
2026-06-21T09:37:52.1561985Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1562085Z               "line": 250
2026-06-21T09:37:52.1562167Z             },
2026-06-21T09:37:52.1562252Z             {
2026-06-21T09:37:52.1562375Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T09:37:52.1562457Z               "line": 273
2026-06-21T09:37:52.1562544Z             },
2026-06-21T09:37:52.1562623Z             {
2026-06-21T09:37:52.1562751Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.1562837Z               "line": 355
2026-06-21T09:37:52.1562922Z             },
2026-06-21T09:37:52.1562997Z             {
2026-06-21T09:37:52.1563125Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T09:37:52.1563212Z               "line": 392
2026-06-21T09:37:52.1563289Z             },
2026-06-21T09:37:52.1563373Z             {
2026-06-21T09:37:52.1563498Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T09:37:52.1563589Z               "line": 131
2026-06-21T09:37:52.1563804Z             },
2026-06-21T09:37:52.1563889Z             {
2026-06-21T09:37:52.1564008Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:37:52.1564089Z               "line": 72
2026-06-21T09:37:52.1564171Z             },
2026-06-21T09:37:52.1564256Z             {
2026-06-21T09:37:52.1564370Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T09:37:52.1564457Z               "line": 97
2026-06-21T09:37:52.1564552Z             },
2026-06-21T09:37:52.1564647Z             {
2026-06-21T09:37:52.1564777Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1564881Z               "line": 379
2026-06-21T09:37:52.1565073Z             },
2026-06-21T09:37:52.1565167Z             {
2026-06-21T09:37:52.1565295Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1565382Z               "line": 417
2026-06-21T09:37:52.1565459Z             },
2026-06-21T09:37:52.1565543Z             {
2026-06-21T09:37:52.1565656Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1565738Z               "line": 433
2026-06-21T09:37:52.1565832Z             },
2026-06-21T09:37:52.1566041Z             {
2026-06-21T09:37:52.1566151Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1566245Z               "line": 472
2026-06-21T09:37:52.1566326Z             },
2026-06-21T09:37:52.1566418Z             {
2026-06-21T09:37:52.1566522Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1566617Z               "line": 489
2026-06-21T09:37:52.1566709Z             },
2026-06-21T09:37:52.1566785Z             {
2026-06-21T09:37:52.1566912Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1567005Z               "line": 517
2026-06-21T09:37:52.1567104Z             },
2026-06-21T09:37:52.1567180Z             {
2026-06-21T09:37:52.1567310Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T09:37:52.1567410Z               "line": 548
2026-06-21T09:37:52.1567495Z             },
2026-06-21T09:37:52.1567590Z             {
2026-06-21T09:37:52.1567701Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1567794Z               "line": 745
2026-06-21T09:37:52.1567862Z             }
2026-06-21T09:37:52.1567949Z           ]
2026-06-21T09:37:52.1568035Z         }
2026-06-21T09:37:52.1568114Z       }
2026-06-21T09:37:52.1568204Z     },
2026-06-21T09:37:52.1568285Z     {
2026-06-21T09:37:52.1568371Z       "id": "REQ-NOTIF-2",
2026-06-21T09:37:52.1568670Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T09:37:52.1568769Z       "requiredStages": [
2026-06-21T09:37:52.1568860Z         "doc",
2026-06-21T09:37:52.1568932Z         "impl",
2026-06-21T09:37:52.1569150Z         "unit",
2026-06-21T09:37:52.1569242Z         "int"
2026-06-21T09:37:52.1569395Z       ],
2026-06-21T09:37:52.1569484Z       "stages": {
2026-06-21T09:37:52.1569571Z         "doc": {
2026-06-21T09:37:52.1569665Z           "complete": true,
2026-06-21T09:37:52.1569770Z           "evidence": [
2026-06-21T09:37:52.1569881Z             {
2026-06-21T09:37:52.1569976Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1570066Z               "line": 509
2026-06-21T09:37:52.1570147Z             },
2026-06-21T09:37:52.1570234Z             {
2026-06-21T09:37:52.1570372Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.1570487Z               "line": 123
2026-06-21T09:37:52.1570578Z             }
2026-06-21T09:37:52.1570657Z           ]
2026-06-21T09:37:52.1570743Z         },
2026-06-21T09:37:52.1570826Z         "impl": {
2026-06-21T09:37:52.1570925Z           "complete": true,
2026-06-21T09:37:52.1571019Z           "evidence": [
2026-06-21T09:37:52.1571099Z             {
2026-06-21T09:37:52.1571225Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1571310Z               "line": 287
2026-06-21T09:37:52.1571386Z             },
2026-06-21T09:37:52.1571568Z             {
2026-06-21T09:37:52.1571691Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1571782Z               "line": 301
2026-06-21T09:37:52.1571854Z             },
2026-06-21T09:37:52.1571944Z             {
2026-06-21T09:37:52.1572063Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1572160Z               "line": 326
2026-06-21T09:37:52.1572244Z             },
2026-06-21T09:37:52.1572325Z             {
2026-06-21T09:37:52.1572441Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1572526Z               "line": 239
2026-06-21T09:37:52.1572612Z             },
2026-06-21T09:37:52.1572789Z             {
2026-06-21T09:37:52.1572912Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1572998Z               "line": 95
2026-06-21T09:37:52.1573080Z             },
2026-06-21T09:37:52.1573156Z             {
2026-06-21T09:37:52.1573259Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1573359Z               "line": 2225
2026-06-21T09:37:52.1573445Z             },
2026-06-21T09:37:52.1573524Z             {
2026-06-21T09:37:52.1573628Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1573719Z               "line": 2274
2026-06-21T09:37:52.1573792Z             },
2026-06-21T09:37:52.1573872Z             {
2026-06-21T09:37:52.1573976Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1574063Z               "line": 2353
2026-06-21T09:37:52.1574149Z             },
2026-06-21T09:37:52.1574248Z             {
2026-06-21T09:37:52.1574349Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1574435Z               "line": 2392
2026-06-21T09:37:52.1574525Z             }
2026-06-21T09:37:52.1574610Z           ]
2026-06-21T09:37:52.1574693Z         },
2026-06-21T09:37:52.1574778Z         "int": {
2026-06-21T09:37:52.1574873Z           "complete": true,
2026-06-21T09:37:52.1574964Z           "evidence": [
2026-06-21T09:37:52.1575045Z             {
2026-06-21T09:37:52.1575173Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1575254Z               "line": 810
2026-06-21T09:37:52.1575337Z             },
2026-06-21T09:37:52.1575421Z             {
2026-06-21T09:37:52.1575536Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1575623Z               "line": 1345
2026-06-21T09:37:52.1575708Z             }
2026-06-21T09:37:52.1575788Z           ]
2026-06-21T09:37:52.1575879Z         },
2026-06-21T09:37:52.1575962Z         "unit": {
2026-06-21T09:37:52.1576056Z           "complete": true,
2026-06-21T09:37:52.1576145Z           "evidence": [
2026-06-21T09:37:52.1576236Z             {
2026-06-21T09:37:52.1576359Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1576444Z               "line": 1022
2026-06-21T09:37:52.1576533Z             },
2026-06-21T09:37:52.1576620Z             {
2026-06-21T09:37:52.1576739Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1576843Z               "line": 1090
2026-06-21T09:37:52.1576930Z             },
2026-06-21T09:37:52.1577011Z             {
2026-06-21T09:37:52.1577101Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1577236Z               "line": 8210
2026-06-21T09:37:52.1577321Z             },
2026-06-21T09:37:52.1577416Z             {
2026-06-21T09:37:52.1577521Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1577617Z               "line": 8265
2026-06-21T09:37:52.1577740Z             }
2026-06-21T09:37:52.1577821Z           ]
2026-06-21T09:37:52.1577908Z         }
2026-06-21T09:37:52.1577993Z       }
2026-06-21T09:37:52.1578084Z     },
2026-06-21T09:37:52.1578170Z     {
2026-06-21T09:37:52.1578256Z       "id": "REQ-PAIR-1",
2026-06-21T09:37:52.1578364Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T09:37:52.1578451Z       "requiredStages": [
2026-06-21T09:37:52.1578538Z         "impl",
2026-06-21T09:37:52.1578614Z         "unit",
2026-06-21T09:37:52.1578702Z         "int"
2026-06-21T09:37:52.1578879Z       ],
2026-06-21T09:37:52.1579043Z       "stages": {
2026-06-21T09:37:52.1579134Z         "doc": {
2026-06-21T09:37:52.1579226Z           "complete": false,
2026-06-21T09:37:52.1579334Z           "evidence": []
2026-06-21T09:37:52.1579434Z         },
2026-06-21T09:37:52.1579531Z         "impl": {
2026-06-21T09:37:52.1579626Z           "complete": true,
2026-06-21T09:37:52.1579710Z           "evidence": [
2026-06-21T09:37:52.1579793Z             {
2026-06-21T09:37:52.1579911Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.1580006Z               "line": 27
2026-06-21T09:37:52.1580083Z             },
2026-06-21T09:37:52.1580264Z             {
2026-06-21T09:37:52.1580393Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.1580489Z               "line": 88
2026-06-21T09:37:52.1580564Z             },
2026-06-21T09:37:52.1580645Z             {
2026-06-21T09:37:52.1580770Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.1580856Z               "line": 110
2026-06-21T09:37:52.1580942Z             },
2026-06-21T09:37:52.1581018Z             {
2026-06-21T09:37:52.1581143Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.1581226Z               "line": 153
2026-06-21T09:37:52.1581303Z             },
2026-06-21T09:37:52.1581396Z             {
2026-06-21T09:37:52.1581523Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.1581613Z               "line": 182
2026-06-21T09:37:52.1581698Z             },
2026-06-21T09:37:52.1581775Z             {
2026-06-21T09:37:52.1581908Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1581998Z               "line": 29
2026-06-21T09:37:52.1582076Z             },
2026-06-21T09:37:52.1582162Z             {
2026-06-21T09:37:52.1582308Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T09:37:52.1582405Z               "line": 31
2026-06-21T09:37:52.1582491Z             },
2026-06-21T09:37:52.1582580Z             {
2026-06-21T09:37:52.1582701Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1582800Z               "line": 44
2026-06-21T09:37:52.1582880Z             },
2026-06-21T09:37:52.1582967Z             {
2026-06-21T09:37:52.1583095Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1583186Z               "line": 171
2026-06-21T09:37:52.1583277Z             },
2026-06-21T09:37:52.1583354Z             {
2026-06-21T09:37:52.1583481Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1583577Z               "line": 376
2026-06-21T09:37:52.1583655Z             }
2026-06-21T09:37:52.1583739Z           ]
2026-06-21T09:37:52.1583819Z         },
2026-06-21T09:37:52.1583900Z         "int": {
2026-06-21T09:37:52.1583986Z           "complete": true,
2026-06-21T09:37:52.1584070Z           "evidence": [
2026-06-21T09:37:52.1584146Z             {
2026-06-21T09:37:52.1584270Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1584361Z               "line": 645
2026-06-21T09:37:52.1584446Z             },
2026-06-21T09:37:52.1584531Z             {
2026-06-21T09:37:52.1584647Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1584733Z               "line": 887
2026-06-21T09:37:52.1584813Z             }
2026-06-21T09:37:52.1584895Z           ]
2026-06-21T09:37:52.1584981Z         },
2026-06-21T09:37:52.1585066Z         "unit": {
2026-06-21T09:37:52.1585157Z           "complete": true,
2026-06-21T09:37:52.1585244Z           "evidence": [
2026-06-21T09:37:52.1585324Z             {
2026-06-21T09:37:52.1585457Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.1585548Z               "line": 236
2026-06-21T09:37:52.1585629Z             },
2026-06-21T09:37:52.1585710Z             {
2026-06-21T09:37:52.1585844Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T09:37:52.1586044Z               "line": 349
2026-06-21T09:37:52.1586134Z             },
2026-06-21T09:37:52.1586222Z             {
2026-06-21T09:37:52.1586344Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1586435Z               "line": 194
2026-06-21T09:37:52.1586522Z             },
2026-06-21T09:37:52.1586611Z             {
2026-06-21T09:37:52.1586729Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1586815Z               "line": 216
2026-06-21T09:37:52.1586900Z             },
2026-06-21T09:37:52.1586984Z             {
2026-06-21T09:37:52.1587113Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1587290Z               "line": 230
2026-06-21T09:37:52.1587375Z             },
2026-06-21T09:37:52.1587456Z             {
2026-06-21T09:37:52.1587581Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1587676Z               "line": 242
2026-06-21T09:37:52.1587767Z             },
2026-06-21T09:37:52.1587848Z             {
2026-06-21T09:37:52.1587971Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1588052Z               "line": 256
2026-06-21T09:37:52.1588130Z             },
2026-06-21T09:37:52.1588219Z             {
2026-06-21T09:37:52.1588343Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1588435Z               "line": 270
2026-06-21T09:37:52.1588525Z             },
2026-06-21T09:37:52.1588605Z             {
2026-06-21T09:37:52.1588725Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1588816Z               "line": 277
2026-06-21T09:37:52.1588901Z             },
2026-06-21T09:37:52.1589069Z             {
2026-06-21T09:37:52.1589188Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T09:37:52.1589272Z               "line": 295
2026-06-21T09:37:52.1589362Z             },
2026-06-21T09:37:52.1589453Z             {
2026-06-21T09:37:52.1589608Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1589689Z               "line": 968
2026-06-21T09:37:52.1589771Z             },
2026-06-21T09:37:52.1589852Z             {
2026-06-21T09:37:52.1589985Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1590072Z               "line": 1051
2026-06-21T09:37:52.1590157Z             },
2026-06-21T09:37:52.1590247Z             {
2026-06-21T09:37:52.1590367Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1590453Z               "line": 1121
2026-06-21T09:37:52.1590534Z             },
2026-06-21T09:37:52.1590624Z             {
2026-06-21T09:37:52.1590748Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1590834Z               "line": 1182
2026-06-21T09:37:52.1590914Z             },
2026-06-21T09:37:52.1590997Z             {
2026-06-21T09:37:52.1591120Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1591206Z               "line": 1238
2026-06-21T09:37:52.1591292Z             },
2026-06-21T09:37:52.1591374Z             {
2026-06-21T09:37:52.1591497Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1591588Z               "line": 1457
2026-06-21T09:37:52.1591669Z             }
2026-06-21T09:37:52.1591759Z           ]
2026-06-21T09:37:52.1591840Z         }
2026-06-21T09:37:52.1591922Z       }
2026-06-21T09:37:52.1592003Z     },
2026-06-21T09:37:52.1592097Z     {
2026-06-21T09:37:52.1592187Z       "id": "REQ-PAIR-2",
2026-06-21T09:37:52.1592316Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T09:37:52.1592421Z       "requiredStages": [],
2026-06-21T09:37:52.1592506Z       "stages": {
2026-06-21T09:37:52.1592588Z         "doc": {
2026-06-21T09:37:52.1592674Z           "complete": false,
2026-06-21T09:37:52.1592764Z           "evidence": []
2026-06-21T09:37:52.1592849Z         },
2026-06-21T09:37:52.1592932Z         "impl": {
2026-06-21T09:37:52.1593130Z           "complete": false,
2026-06-21T09:37:52.1593222Z           "evidence": []
2026-06-21T09:37:52.1593308Z         },
2026-06-21T09:37:52.1593389Z         "int": {
2026-06-21T09:37:52.1593489Z           "complete": false,
2026-06-21T09:37:52.1593585Z           "evidence": []
2026-06-21T09:37:52.1593665Z         },
2026-06-21T09:37:52.1593755Z         "unit": {
2026-06-21T09:37:52.1593852Z           "complete": false,
2026-06-21T09:37:52.1593947Z           "evidence": []
2026-06-21T09:37:52.1594022Z         }
2026-06-21T09:37:52.1594108Z       }
2026-06-21T09:37:52.1594186Z     },
2026-06-21T09:37:52.1596966Z     {
2026-06-21T09:37:52.1597087Z       "id": "REQ-PAIR-3",
2026-06-21T09:37:52.1597366Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T09:37:52.1597470Z       "requiredStages": [
2026-06-21T09:37:52.1597554Z         "impl",
2026-06-21T09:37:52.1597644Z         "unit"
2026-06-21T09:37:52.1597731Z       ],
2026-06-21T09:37:52.1597812Z       "stages": {
2026-06-21T09:37:52.1597907Z         "doc": {
2026-06-21T09:37:52.1598002Z           "complete": false,
2026-06-21T09:37:52.1598098Z           "evidence": []
2026-06-21T09:37:52.1598174Z         },
2026-06-21T09:37:52.1598269Z         "impl": {
2026-06-21T09:37:52.1598361Z           "complete": true,
2026-06-21T09:37:52.1598446Z           "evidence": [
2026-06-21T09:37:52.1598541Z             {
2026-06-21T09:37:52.1598637Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1598732Z               "line": 3259
2026-06-21T09:37:52.1598818Z             },
2026-06-21T09:37:52.1598904Z             {
2026-06-21T09:37:52.1599066Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1599165Z               "line": 3328
2026-06-21T09:37:52.1599246Z             },
2026-06-21T09:37:52.1599324Z             {
2026-06-21T09:37:52.1599433Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1599519Z               "line": 3709
2026-06-21T09:37:52.1599596Z             },
2026-06-21T09:37:52.1599686Z             {
2026-06-21T09:37:52.1599785Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1599879Z               "line": 4961
2026-06-21T09:37:52.1599951Z             }
2026-06-21T09:37:52.1600041Z           ]
2026-06-21T09:37:52.1600126Z         },
2026-06-21T09:37:52.1600211Z         "int": {
2026-06-21T09:37:52.1600298Z           "complete": false,
2026-06-21T09:37:52.1600374Z           "evidence": []
2026-06-21T09:37:52.1600460Z         },
2026-06-21T09:37:52.1600530Z         "unit": {
2026-06-21T09:37:52.1600617Z           "complete": true,
2026-06-21T09:37:52.1600708Z           "evidence": [
2026-06-21T09:37:52.1600788Z             {
2026-06-21T09:37:52.1600903Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1600979Z               "line": 9964
2026-06-21T09:37:52.1601065Z             },
2026-06-21T09:37:52.1601150Z             {
2026-06-21T09:37:52.1601247Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1601332Z               "line": 10179
2026-06-21T09:37:52.1601418Z             },
2026-06-21T09:37:52.1601499Z             {
2026-06-21T09:37:52.1601600Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1601694Z               "line": 10838
2026-06-21T09:37:52.1601771Z             },
2026-06-21T09:37:52.1601852Z             {
2026-06-21T09:37:52.1601952Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1602047Z               "line": 10857
2026-06-21T09:37:52.1602128Z             },
2026-06-21T09:37:52.1602206Z             {
2026-06-21T09:37:52.1602314Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1602405Z               "line": 10881
2026-06-21T09:37:52.1602492Z             },
2026-06-21T09:37:52.1602578Z             {
2026-06-21T09:37:52.1602681Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1602766Z               "line": 10900
2026-06-21T09:37:52.1602843Z             },
2026-06-21T09:37:52.1602924Z             {
2026-06-21T09:37:52.1603014Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1603220Z               "line": 10913
2026-06-21T09:37:52.1603306Z             },
2026-06-21T09:37:52.1603395Z             {
2026-06-21T09:37:52.1603492Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1603577Z               "line": 10922
2026-06-21T09:37:52.1603663Z             }
2026-06-21T09:37:52.1603744Z           ]
2026-06-21T09:37:52.1603835Z         }
2026-06-21T09:37:52.1603915Z       }
2026-06-21T09:37:52.1604006Z     },
2026-06-21T09:37:52.1604082Z     {
2026-06-21T09:37:52.1604169Z       "id": "REQ-PAIR-4",
2026-06-21T09:37:52.1604288Z       "title": "Subnet naming on first pairing",
2026-06-21T09:37:52.1604474Z       "requiredStages": [
2026-06-21T09:37:52.1604550Z         "impl",
2026-06-21T09:37:52.1604636Z         "unit"
2026-06-21T09:37:52.1604726Z       ],
2026-06-21T09:37:52.1604818Z       "stages": {
2026-06-21T09:37:52.1604897Z         "doc": {
2026-06-21T09:37:52.1604997Z           "complete": false,
2026-06-21T09:37:52.1605097Z           "evidence": []
2026-06-21T09:37:52.1605191Z         },
2026-06-21T09:37:52.1605276Z         "impl": {
2026-06-21T09:37:52.1605376Z           "complete": true,
2026-06-21T09:37:52.1605476Z           "evidence": [
2026-06-21T09:37:52.1605548Z             {
2026-06-21T09:37:52.1605676Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T09:37:52.1605763Z               "line": 174
2026-06-21T09:37:52.1605849Z             }
2026-06-21T09:37:52.1605938Z           ]
2026-06-21T09:37:52.1606015Z         },
2026-06-21T09:37:52.1606102Z         "int": {
2026-06-21T09:37:52.1606187Z           "complete": false,
2026-06-21T09:37:52.1606281Z           "evidence": []
2026-06-21T09:37:52.1606368Z         },
2026-06-21T09:37:52.1606454Z         "unit": {
2026-06-21T09:37:52.1606544Z           "complete": true,
2026-06-21T09:37:52.1606634Z           "evidence": [
2026-06-21T09:37:52.1606721Z             {
2026-06-21T09:37:52.1606854Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1606954Z               "line": 1294
2026-06-21T09:37:52.1607032Z             }
2026-06-21T09:37:52.1607111Z           ]
2026-06-21T09:37:52.1607188Z         }
2026-06-21T09:37:52.1607284Z       }
2026-06-21T09:37:52.1607370Z     },
2026-06-21T09:37:52.1607454Z     {
2026-06-21T09:37:52.1607550Z       "id": "REQ-PAIR-5",
2026-06-21T09:37:52.1607845Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T09:37:52.1607940Z       "requiredStages": [
2026-06-21T09:37:52.1608021Z         "impl",
2026-06-21T09:37:52.1608105Z         "unit",
2026-06-21T09:37:52.1608190Z         "int"
2026-06-21T09:37:52.1608272Z       ],
2026-06-21T09:37:52.1608358Z       "stages": {
2026-06-21T09:37:52.1608443Z         "doc": {
2026-06-21T09:37:52.1608543Z           "complete": false,
2026-06-21T09:37:52.1608626Z           "evidence": []
2026-06-21T09:37:52.1608711Z         },
2026-06-21T09:37:52.1608791Z         "impl": {
2026-06-21T09:37:52.1608887Z           "complete": true,
2026-06-21T09:37:52.1609059Z           "evidence": [
2026-06-21T09:37:52.1609144Z             {
2026-06-21T09:37:52.1609264Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1609354Z               "line": 44
2026-06-21T09:37:52.1609435Z             },
2026-06-21T09:37:52.1609521Z             {
2026-06-21T09:37:52.1609645Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1609735Z               "line": 96
2026-06-21T09:37:52.1609807Z             },
2026-06-21T09:37:52.1609884Z             {
2026-06-21T09:37:52.1610002Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1610098Z               "line": 107
2026-06-21T09:37:52.1610185Z             },
2026-06-21T09:37:52.1610266Z             {
2026-06-21T09:37:52.1610388Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1610478Z               "line": 124
2026-06-21T09:37:52.1610671Z             },
2026-06-21T09:37:52.1610756Z             {
2026-06-21T09:37:52.1610872Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1610963Z               "line": 155
2026-06-21T09:37:52.1611043Z             },
2026-06-21T09:37:52.1611129Z             {
2026-06-21T09:37:52.1611249Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1611334Z               "line": 195
2026-06-21T09:37:52.1611424Z             },
2026-06-21T09:37:52.1611507Z             {
2026-06-21T09:37:52.1611630Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1611715Z               "line": 251
2026-06-21T09:37:52.1611892Z             },
2026-06-21T09:37:52.1611978Z             {
2026-06-21T09:37:52.1612117Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1612212Z               "line": 33
2026-06-21T09:37:52.1612288Z             },
2026-06-21T09:37:52.1612373Z             {
2026-06-21T09:37:52.1612517Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1612607Z               "line": 45
2026-06-21T09:37:52.1612688Z             },
2026-06-21T09:37:52.1612766Z             {
2026-06-21T09:37:52.1612903Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1612994Z               "line": 59
2026-06-21T09:37:52.1613071Z             },
2026-06-21T09:37:52.1613152Z             {
2026-06-21T09:37:52.1613274Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1613355Z               "line": 376
2026-06-21T09:37:52.1613436Z             }
2026-06-21T09:37:52.1613532Z           ]
2026-06-21T09:37:52.1613617Z         },
2026-06-21T09:37:52.1613703Z         "int": {
2026-06-21T09:37:52.1613790Z           "complete": true,
2026-06-21T09:37:52.1613875Z           "evidence": [
2026-06-21T09:37:52.1613960Z             {
2026-06-21T09:37:52.1614076Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1614166Z               "line": 887
2026-06-21T09:37:52.1614251Z             },
2026-06-21T09:37:52.1614332Z             {
2026-06-21T09:37:52.1614457Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1614538Z               "line": 342
2026-06-21T09:37:52.1614609Z             }
2026-06-21T09:37:52.1614696Z           ]
2026-06-21T09:37:52.1614776Z         },
2026-06-21T09:37:52.1614848Z         "unit": {
2026-06-21T09:37:52.1614938Z           "complete": true,
2026-06-21T09:37:52.1615029Z           "evidence": [
2026-06-21T09:37:52.1615110Z             {
2026-06-21T09:37:52.1615219Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1615316Z               "line": 293
2026-06-21T09:37:52.1615401Z             },
2026-06-21T09:37:52.1615486Z             {
2026-06-21T09:37:52.1615609Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1615695Z               "line": 304
2026-06-21T09:37:52.1615789Z             },
2026-06-21T09:37:52.1615860Z             {
2026-06-21T09:37:52.1615984Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.1616076Z               "line": 406
2026-06-21T09:37:52.1616159Z             },
2026-06-21T09:37:52.1616241Z             {
2026-06-21T09:37:52.1616375Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1616470Z               "line": 72
2026-06-21T09:37:52.1616551Z             },
2026-06-21T09:37:52.1616633Z             {
2026-06-21T09:37:52.1616775Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1616861Z               "line": 82
2026-06-21T09:37:52.1616952Z             },
2026-06-21T09:37:52.1617033Z             {
2026-06-21T09:37:52.1617166Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1617272Z               "line": 100
2026-06-21T09:37:52.1617366Z             },
2026-06-21T09:37:52.1617466Z             {
2026-06-21T09:37:52.1617734Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1617829Z               "line": 110
2026-06-21T09:37:52.1617911Z             },
2026-06-21T09:37:52.1617996Z             {
2026-06-21T09:37:52.1618125Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T09:37:52.1618207Z               "line": 125
2026-06-21T09:37:52.1618292Z             },
2026-06-21T09:37:52.1618376Z             {
2026-06-21T09:37:52.1618505Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1618600Z               "line": 1044
2026-06-21T09:37:52.1618679Z             },
2026-06-21T09:37:52.1618860Z             {
2026-06-21T09:37:52.1619036Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1619132Z               "line": 1110
2026-06-21T09:37:52.1619205Z             },
2026-06-21T09:37:52.1619300Z             {
2026-06-21T09:37:52.1619418Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.1619515Z               "line": 1357
2026-06-21T09:37:52.1619600Z             }
2026-06-21T09:37:52.1619685Z           ]
2026-06-21T09:37:52.1619766Z         }
2026-06-21T09:37:52.1619839Z       }
2026-06-21T09:37:52.1619928Z     },
2026-06-21T09:37:52.1620000Z     {
2026-06-21T09:37:52.1620106Z       "id": "REQ-PAIR-6",
2026-06-21T09:37:52.1620372Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T09:37:52.1620454Z       "requiredStages": [
2026-06-21T09:37:52.1620543Z         "impl",
2026-06-21T09:37:52.1620625Z         "unit"
2026-06-21T09:37:52.1620711Z       ],
2026-06-21T09:37:52.1620798Z       "stages": {
2026-06-21T09:37:52.1620886Z         "doc": {
2026-06-21T09:37:52.1620986Z           "complete": false,
2026-06-21T09:37:52.1621067Z           "evidence": []
2026-06-21T09:37:52.1621148Z         },
2026-06-21T09:37:52.1621231Z         "impl": {
2026-06-21T09:37:52.1621322Z           "complete": true,
2026-06-21T09:37:52.1621403Z           "evidence": [
2026-06-21T09:37:52.1621490Z             {
2026-06-21T09:37:52.1621603Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1621689Z               "line": 3328
2026-06-21T09:37:52.1621776Z             },
2026-06-21T09:37:52.1621857Z             {
2026-06-21T09:37:52.1621965Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1622048Z               "line": 3709
2026-06-21T09:37:52.1622133Z             },
2026-06-21T09:37:52.1622218Z             {
2026-06-21T09:37:52.1622324Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.1622405Z               "line": 18
2026-06-21T09:37:52.1622486Z             },
2026-06-21T09:37:52.1622571Z             {
2026-06-21T09:37:52.1622672Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.1622762Z               "line": 49
2026-06-21T09:37:52.1622848Z             },
2026-06-21T09:37:52.1622933Z             {
2026-06-21T09:37:52.1623035Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.1623129Z               "line": 318
2026-06-21T09:37:52.1623210Z             }
2026-06-21T09:37:52.1623292Z           ]
2026-06-21T09:37:52.1623373Z         },
2026-06-21T09:37:52.1623448Z         "int": {
2026-06-21T09:37:52.1623540Z           "complete": false,
2026-06-21T09:37:52.1623626Z           "evidence": []
2026-06-21T09:37:52.1623702Z         },
2026-06-21T09:37:52.1623782Z         "unit": {
2026-06-21T09:37:52.1623862Z           "complete": true,
2026-06-21T09:37:52.1623958Z           "evidence": [
2026-06-21T09:37:52.1624045Z             {
2026-06-21T09:37:52.1624144Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1624239Z               "line": 10935
2026-06-21T09:37:52.1624326Z             },
2026-06-21T09:37:52.1624407Z             {
2026-06-21T09:37:52.1624511Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1624593Z               "line": 10952
2026-06-21T09:37:52.1624683Z             },
2026-06-21T09:37:52.1624874Z             {
2026-06-21T09:37:52.1624974Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.1625059Z               "line": 383
2026-06-21T09:37:52.1625150Z             },
2026-06-21T09:37:52.1625237Z             {
2026-06-21T09:37:52.1625341Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T09:37:52.1625436Z               "line": 392
2026-06-21T09:37:52.1625518Z             }
2026-06-21T09:37:52.1625604Z           ]
2026-06-21T09:37:52.1625689Z         }
2026-06-21T09:37:52.1625770Z       }
2026-06-21T09:37:52.1625856Z     },
2026-06-21T09:37:52.1625942Z     {
2026-06-21T09:37:52.1626032Z       "id": "REQ-PAIR-7",
2026-06-21T09:37:52.1626283Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T09:37:52.1626382Z       "requiredStages": [],
2026-06-21T09:37:52.1626472Z       "stages": {
2026-06-21T09:37:52.1626563Z         "doc": {
2026-06-21T09:37:52.1626658Z           "complete": false,
2026-06-21T09:37:52.1626748Z           "evidence": []
2026-06-21T09:37:52.1626835Z         },
2026-06-21T09:37:52.1626921Z         "impl": {
2026-06-21T09:37:52.1627007Z           "complete": false,
2026-06-21T09:37:52.1627087Z           "evidence": []
2026-06-21T09:37:52.1627165Z         },
2026-06-21T09:37:52.1627250Z         "int": {
2026-06-21T09:37:52.1627340Z           "complete": false,
2026-06-21T09:37:52.1627436Z           "evidence": []
2026-06-21T09:37:52.1627512Z         },
2026-06-21T09:37:52.1627593Z         "unit": {
2026-06-21T09:37:52.1627674Z           "complete": false,
2026-06-21T09:37:52.1627769Z           "evidence": []
2026-06-21T09:37:52.1627851Z         }
2026-06-21T09:37:52.1627931Z       }
2026-06-21T09:37:52.1628017Z     },
2026-06-21T09:37:52.1628104Z     {
2026-06-21T09:37:52.1628199Z       "id": "REQ-PAIR-8",
2026-06-21T09:37:52.1629682Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T09:37:52.1629793Z       "requiredStages": [
2026-06-21T09:37:52.1629874Z         "impl",
2026-06-21T09:37:52.1629959Z         "unit"
2026-06-21T09:37:52.1630041Z       ],
2026-06-21T09:37:52.1630131Z       "stages": {
2026-06-21T09:37:52.1630217Z         "doc": {
2026-06-21T09:37:52.1630317Z           "complete": false,
2026-06-21T09:37:52.1630404Z           "evidence": []
2026-06-21T09:37:52.1630488Z         },
2026-06-21T09:37:52.1630584Z         "impl": {
2026-06-21T09:37:52.1630680Z           "complete": true,
2026-06-21T09:37:52.1630757Z           "evidence": [
2026-06-21T09:37:52.1630841Z             {
2026-06-21T09:37:52.1630976Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.1631057Z               "line": 577
2026-06-21T09:37:52.1631151Z             },
2026-06-21T09:37:52.1631232Z             {
2026-06-21T09:37:52.1631372Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:37:52.1631456Z               "line": 22
2026-06-21T09:37:52.1631542Z             },
2026-06-21T09:37:52.1631623Z             {
2026-06-21T09:37:52.1631741Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:37:52.1631830Z               "line": 76
2026-06-21T09:37:52.1631910Z             },
2026-06-21T09:37:52.1631997Z             {
2026-06-21T09:37:52.1632121Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:37:52.1632216Z               "line": 127
2026-06-21T09:37:52.1632303Z             }
2026-06-21T09:37:52.1632383Z           ]
2026-06-21T09:37:52.1632473Z         },
2026-06-21T09:37:52.1632554Z         "int": {
2026-06-21T09:37:52.1632651Z           "complete": false,
2026-06-21T09:37:52.1632727Z           "evidence": []
2026-06-21T09:37:52.1632807Z         },
2026-06-21T09:37:52.1633008Z         "unit": {
2026-06-21T09:37:52.1633093Z           "complete": true,
2026-06-21T09:37:52.1633188Z           "evidence": [
2026-06-21T09:37:52.1633271Z             {
2026-06-21T09:37:52.1633385Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:37:52.1633475Z               "line": 183
2026-06-21T09:37:52.1633557Z             },
2026-06-21T09:37:52.1633642Z             {
2026-06-21T09:37:52.1633765Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:37:52.1633858Z               "line": 195
2026-06-21T09:37:52.1633934Z             },
2026-06-21T09:37:52.1634013Z             {
2026-06-21T09:37:52.1634239Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:37:52.1634337Z               "line": 211
2026-06-21T09:37:52.1634418Z             },
2026-06-21T09:37:52.1634504Z             {
2026-06-21T09:37:52.1634619Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T09:37:52.1634718Z               "line": 227
2026-06-21T09:37:52.1634799Z             }
2026-06-21T09:37:52.1634881Z           ]
2026-06-21T09:37:52.1634967Z         }
2026-06-21T09:37:52.1635052Z       }
2026-06-21T09:37:52.1635134Z     },
2026-06-21T09:37:52.1635220Z     {
2026-06-21T09:37:52.1635315Z       "id": "REQ-PICKER-1",
2026-06-21T09:37:52.1638887Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T09:37:52.1639083Z       "requiredStages": [
2026-06-21T09:37:52.1639178Z         "impl",
2026-06-21T09:37:52.1639260Z         "unit"
2026-06-21T09:37:52.1639360Z       ],
2026-06-21T09:37:52.1639445Z       "stages": {
2026-06-21T09:37:52.1639535Z         "doc": {
2026-06-21T09:37:52.1639625Z           "complete": false,
2026-06-21T09:37:52.1639720Z           "evidence": []
2026-06-21T09:37:52.1639805Z         },
2026-06-21T09:37:52.1639890Z         "impl": {
2026-06-21T09:37:52.1639981Z           "complete": true,
2026-06-21T09:37:52.1640067Z           "evidence": [
2026-06-21T09:37:52.1640157Z             {
2026-06-21T09:37:52.1640277Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1640372Z               "line": 248
2026-06-21T09:37:52.1640457Z             },
2026-06-21T09:37:52.1640538Z             {
2026-06-21T09:37:52.1640668Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1640749Z               "line": 263
2026-06-21T09:37:52.1640833Z             }
2026-06-21T09:37:52.1640921Z           ]
2026-06-21T09:37:52.1641006Z         },
2026-06-21T09:37:52.1641087Z         "int": {
2026-06-21T09:37:52.1641187Z           "complete": false,
2026-06-21T09:37:52.1641279Z           "evidence": []
2026-06-21T09:37:52.1641363Z         },
2026-06-21T09:37:52.1641449Z         "unit": {
2026-06-21T09:37:52.1641546Z           "complete": true,
2026-06-21T09:37:52.1641636Z           "evidence": [
2026-06-21T09:37:52.1641720Z             {
2026-06-21T09:37:52.1641932Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1642016Z               "line": 476
2026-06-21T09:37:52.1642102Z             },
2026-06-21T09:37:52.1642183Z             {
2026-06-21T09:37:52.1642287Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1642380Z               "line": 753
2026-06-21T09:37:52.1642470Z             },
2026-06-21T09:37:52.1642557Z             {
2026-06-21T09:37:52.1642667Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1642747Z               "line": 886
2026-06-21T09:37:52.1642829Z             },
2026-06-21T09:37:52.1642910Z             {
2026-06-21T09:37:52.1643114Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1643206Z               "line": 455
2026-06-21T09:37:52.1643282Z             }
2026-06-21T09:37:52.1643362Z           ]
2026-06-21T09:37:52.1643439Z         }
2026-06-21T09:37:52.1643526Z       }
2026-06-21T09:37:52.1643591Z     },
2026-06-21T09:37:52.1643686Z     {
2026-06-21T09:37:52.1643788Z       "id": "REQ-PICKER-2",
2026-06-21T09:37:52.1645664Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T09:37:52.1645780Z       "requiredStages": [
2026-06-21T09:37:52.1645861Z         "impl",
2026-06-21T09:37:52.1645946Z         "unit"
2026-06-21T09:37:52.1646037Z       ],
2026-06-21T09:37:52.1646113Z       "stages": {
2026-06-21T09:37:52.1646199Z         "doc": {
2026-06-21T09:37:52.1646299Z           "complete": false,
2026-06-21T09:37:52.1646381Z           "evidence": []
2026-06-21T09:37:52.1646461Z         },
2026-06-21T09:37:52.1646547Z         "impl": {
2026-06-21T09:37:52.1646643Z           "complete": true,
2026-06-21T09:37:52.1646725Z           "evidence": [
2026-06-21T09:37:52.1646813Z             {
2026-06-21T09:37:52.1646938Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1647021Z               "line": 183
2026-06-21T09:37:52.1647104Z             },
2026-06-21T09:37:52.1647190Z             {
2026-06-21T09:37:52.1647304Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1647389Z               "line": 296
2026-06-21T09:37:52.1647483Z             }
2026-06-21T09:37:52.1647563Z           ]
2026-06-21T09:37:52.1647635Z         },
2026-06-21T09:37:52.1647722Z         "int": {
2026-06-21T09:37:52.1647802Z           "complete": false,
2026-06-21T09:37:52.1647897Z           "evidence": []
2026-06-21T09:37:52.1647979Z         },
2026-06-21T09:37:52.1648065Z         "unit": {
2026-06-21T09:37:52.1648165Z           "complete": true,
2026-06-21T09:37:52.1648246Z           "evidence": [
2026-06-21T09:37:52.1648323Z             {
2026-06-21T09:37:52.1648436Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.1648531Z               "line": 655
2026-06-21T09:37:52.1648614Z             }
2026-06-21T09:37:52.1648694Z           ]
2026-06-21T09:37:52.1648775Z         }
2026-06-21T09:37:52.1648856Z       }
2026-06-21T09:37:52.1649033Z     },
2026-06-21T09:37:52.1649114Z     {
2026-06-21T09:37:52.1649200Z       "id": "REQ-PICKER-3",
2026-06-21T09:37:52.1651647Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T09:37:52.1651881Z       "requiredStages": [
2026-06-21T09:37:52.1651966Z         "impl",
2026-06-21T09:37:52.1652047Z         "unit"
2026-06-21T09:37:52.1652130Z       ],
2026-06-21T09:37:52.1652215Z       "stages": {
2026-06-21T09:37:52.1652392Z         "doc": {
2026-06-21T09:37:52.1652492Z           "complete": false,
2026-06-21T09:37:52.1652577Z           "evidence": []
2026-06-21T09:37:52.1652657Z         },
2026-06-21T09:37:52.1652743Z         "impl": {
2026-06-21T09:37:52.1652833Z           "complete": true,
2026-06-21T09:37:52.1652931Z           "evidence": [
2026-06-21T09:37:52.1653017Z             {
2026-06-21T09:37:52.1653127Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1653209Z               "line": 124
2026-06-21T09:37:52.1653293Z             }
2026-06-21T09:37:52.1653379Z           ]
2026-06-21T09:37:52.1653461Z         },
2026-06-21T09:37:52.1653542Z         "int": {
2026-06-21T09:37:52.1653631Z           "complete": false,
2026-06-21T09:37:52.1653719Z           "evidence": []
2026-06-21T09:37:52.1653804Z         },
2026-06-21T09:37:52.1653890Z         "unit": {
2026-06-21T09:37:52.1653990Z           "complete": true,
2026-06-21T09:37:52.1654071Z           "evidence": [
2026-06-21T09:37:52.1654161Z             {
2026-06-21T09:37:52.1654275Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1654363Z               "line": 369
2026-06-21T09:37:52.1654443Z             }
2026-06-21T09:37:52.1654524Z           ]
2026-06-21T09:37:52.1654610Z         }
2026-06-21T09:37:52.1654687Z       }
2026-06-21T09:37:52.1654781Z     },
2026-06-21T09:37:52.1654863Z     {
2026-06-21T09:37:52.1654958Z       "id": "REQ-PICKER-4",
2026-06-21T09:37:52.1656850Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T09:37:52.1656936Z       "requiredStages": [
2026-06-21T09:37:52.1657026Z         "impl",
2026-06-21T09:37:52.1657107Z         "unit"
2026-06-21T09:37:52.1657188Z       ],
2026-06-21T09:37:52.1657280Z       "stages": {
2026-06-21T09:37:52.1657364Z         "doc": {
2026-06-21T09:37:52.1657455Z           "complete": false,
2026-06-21T09:37:52.1657532Z           "evidence": []
2026-06-21T09:37:52.1657614Z         },
2026-06-21T09:37:52.1657702Z         "impl": {
2026-06-21T09:37:52.1657783Z           "complete": true,
2026-06-21T09:37:52.1657873Z           "evidence": [
2026-06-21T09:37:52.1657954Z             {
2026-06-21T09:37:52.1658081Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1658162Z               "line": 353
2026-06-21T09:37:52.1658244Z             },
2026-06-21T09:37:52.1658325Z             {
2026-06-21T09:37:52.1658443Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1658525Z               "line": 105
2026-06-21T09:37:52.1658611Z             }
2026-06-21T09:37:52.1658682Z           ]
2026-06-21T09:37:52.1658767Z         },
2026-06-21T09:37:52.1658850Z         "int": {
2026-06-21T09:37:52.1659025Z           "complete": false,
2026-06-21T09:37:52.1659212Z           "evidence": []
2026-06-21T09:37:52.1659293Z         },
2026-06-21T09:37:52.1659373Z         "unit": {
2026-06-21T09:37:52.1659474Z           "complete": true,
2026-06-21T09:37:52.1659559Z           "evidence": [
2026-06-21T09:37:52.1659645Z             {
2026-06-21T09:37:52.1659770Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1659851Z               "line": 1246
2026-06-21T09:37:52.1659940Z             },
2026-06-21T09:37:52.1660022Z             {
2026-06-21T09:37:52.1660138Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1660227Z               "line": 427
2026-06-21T09:37:52.1660405Z             }
2026-06-21T09:37:52.1660486Z           ]
2026-06-21T09:37:52.1660570Z         }
2026-06-21T09:37:52.1660655Z       }
2026-06-21T09:37:52.1660736Z     },
2026-06-21T09:37:52.1660817Z     {
2026-06-21T09:37:52.1660910Z       "id": "REQ-PICKER-5",
2026-06-21T09:37:52.1663954Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T09:37:52.1664078Z       "requiredStages": [
2026-06-21T09:37:52.1664163Z         "impl",
2026-06-21T09:37:52.1664249Z         "unit"
2026-06-21T09:37:52.1664331Z       ],
2026-06-21T09:37:52.1664417Z       "stages": {
2026-06-21T09:37:52.1664506Z         "doc": {
2026-06-21T09:37:52.1664603Z           "complete": false,
2026-06-21T09:37:52.1664689Z           "evidence": []
2026-06-21T09:37:52.1664779Z         },
2026-06-21T09:37:52.1664855Z         "impl": {
2026-06-21T09:37:52.1664951Z           "complete": true,
2026-06-21T09:37:52.1665032Z           "evidence": [
2026-06-21T09:37:52.1665113Z             {
2026-06-21T09:37:52.1665218Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1665323Z               "line": 1802
2026-06-21T09:37:52.1665408Z             }
2026-06-21T09:37:52.1665475Z           ]
2026-06-21T09:37:52.1665562Z         },
2026-06-21T09:37:52.1665642Z         "int": {
2026-06-21T09:37:52.1665732Z           "complete": false,
2026-06-21T09:37:52.1665824Z           "evidence": []
2026-06-21T09:37:52.1665915Z         },
2026-06-21T09:37:52.1666112Z         "unit": {
2026-06-21T09:37:52.1666194Z           "complete": true,
2026-06-21T09:37:52.1666285Z           "evidence": [
2026-06-21T09:37:52.1666370Z             {
2026-06-21T09:37:52.1666479Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1666567Z               "line": 7526
2026-06-21T09:37:52.1666653Z             }
2026-06-21T09:37:52.1666732Z           ]
2026-06-21T09:37:52.1666809Z         }
2026-06-21T09:37:52.1666896Z       }
2026-06-21T09:37:52.1666977Z     },
2026-06-21T09:37:52.1667066Z     {
2026-06-21T09:37:52.1667172Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T09:37:52.1668538Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T09:37:52.1668722Z       "requiredStages": [],
2026-06-21T09:37:52.1668794Z       "stages": {
2026-06-21T09:37:52.1668886Z         "doc": {
2026-06-21T09:37:52.1669061Z           "complete": false,
2026-06-21T09:37:52.1669147Z           "evidence": []
2026-06-21T09:37:52.1669228Z         },
2026-06-21T09:37:52.1669318Z         "impl": {
2026-06-21T09:37:52.1669429Z           "complete": false,
2026-06-21T09:37:52.1669534Z           "evidence": []
2026-06-21T09:37:52.1669618Z         },
2026-06-21T09:37:52.1669805Z         "int": {
2026-06-21T09:37:52.1669891Z           "complete": false,
2026-06-21T09:37:52.1669976Z           "evidence": []
2026-06-21T09:37:52.1670058Z         },
2026-06-21T09:37:52.1670134Z         "unit": {
2026-06-21T09:37:52.1670215Z           "complete": false,
2026-06-21T09:37:52.1670301Z           "evidence": []
2026-06-21T09:37:52.1670393Z         }
2026-06-21T09:37:52.1670472Z       }
2026-06-21T09:37:52.1670563Z     },
2026-06-21T09:37:52.1670635Z     {
2026-06-21T09:37:52.1670750Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T09:37:52.1671842Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T09:37:52.1671938Z       "requiredStages": [
2026-06-21T09:37:52.1672034Z         "impl",
2026-06-21T09:37:52.1672119Z         "unit"
2026-06-21T09:37:52.1672204Z       ],
2026-06-21T09:37:52.1672287Z       "stages": {
2026-06-21T09:37:52.1672377Z         "doc": {
2026-06-21T09:37:52.1672462Z           "complete": false,
2026-06-21T09:37:52.1672543Z           "evidence": []
2026-06-21T09:37:52.1672635Z         },
2026-06-21T09:37:52.1672720Z         "impl": {
2026-06-21T09:37:52.1672815Z           "complete": true,
2026-06-21T09:37:52.1672897Z           "evidence": [
2026-06-21T09:37:52.1672982Z             {
2026-06-21T09:37:52.1673106Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1673182Z               "line": 275
2026-06-21T09:37:52.1673269Z             }
2026-06-21T09:37:52.1673354Z           ]
2026-06-21T09:37:52.1673440Z         },
2026-06-21T09:37:52.1673522Z         "int": {
2026-06-21T09:37:52.1673608Z           "complete": false,
2026-06-21T09:37:52.1673706Z           "evidence": []
2026-06-21T09:37:52.1673796Z         },
2026-06-21T09:37:52.1673887Z         "unit": {
2026-06-21T09:37:52.1673976Z           "complete": true,
2026-06-21T09:37:52.1674075Z           "evidence": [
2026-06-21T09:37:52.1674151Z             {
2026-06-21T09:37:52.1674267Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1674357Z               "line": 400
2026-06-21T09:37:52.1677117Z             }
2026-06-21T09:37:52.1677217Z           ]
2026-06-21T09:37:52.1677306Z         }
2026-06-21T09:37:52.1677399Z       }
2026-06-21T09:37:52.1677484Z     },
2026-06-21T09:37:52.1677565Z     {
2026-06-21T09:37:52.1677674Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T09:37:52.1679379Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T09:37:52.1679492Z       "requiredStages": [
2026-06-21T09:37:52.1679573Z         "impl",
2026-06-21T09:37:52.1679803Z         "unit"
2026-06-21T09:37:52.1679888Z       ],
2026-06-21T09:37:52.1679975Z       "stages": {
2026-06-21T09:37:52.1680060Z         "doc": {
2026-06-21T09:37:52.1680150Z           "complete": false,
2026-06-21T09:37:52.1680246Z           "evidence": []
2026-06-21T09:37:52.1680333Z         },
2026-06-21T09:37:52.1680423Z         "impl": {
2026-06-21T09:37:52.1680522Z           "complete": true,
2026-06-21T09:37:52.1680604Z           "evidence": [
2026-06-21T09:37:52.1680685Z             {
2026-06-21T09:37:52.1680808Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1680910Z               "line": 654
2026-06-21T09:37:52.1680986Z             }
2026-06-21T09:37:52.1681166Z           ]
2026-06-21T09:37:52.1681253Z         },
2026-06-21T09:37:52.1681338Z         "int": {
2026-06-21T09:37:52.1681433Z           "complete": false,
2026-06-21T09:37:52.1681520Z           "evidence": []
2026-06-21T09:37:52.1681597Z         },
2026-06-21T09:37:52.1681681Z         "unit": {
2026-06-21T09:37:52.1681785Z           "complete": true,
2026-06-21T09:37:52.1681871Z           "evidence": [
2026-06-21T09:37:52.1681956Z             {
2026-06-21T09:37:52.1682073Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1682154Z               "line": 1078
2026-06-21T09:37:52.1682241Z             },
2026-06-21T09:37:52.1682327Z             {
2026-06-21T09:37:52.1682440Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1682527Z               "line": 1092
2026-06-21T09:37:52.1682612Z             }
2026-06-21T09:37:52.1682698Z           ]
2026-06-21T09:37:52.1682779Z         }
2026-06-21T09:37:52.1682856Z       }
2026-06-21T09:37:52.1682937Z     },
2026-06-21T09:37:52.1683022Z     {
2026-06-21T09:37:52.1683123Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T09:37:52.1684721Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T09:37:52.1684827Z       "requiredStages": [],
2026-06-21T09:37:52.1684917Z       "stages": {
2026-06-21T09:37:52.1684993Z         "doc": {
2026-06-21T09:37:52.1685094Z           "complete": false,
2026-06-21T09:37:52.1685179Z           "evidence": []
2026-06-21T09:37:52.1685260Z         },
2026-06-21T09:37:52.1685355Z         "impl": {
2026-06-21T09:37:52.1685456Z           "complete": false,
2026-06-21T09:37:52.1685551Z           "evidence": []
2026-06-21T09:37:52.1685636Z         },
2026-06-21T09:37:52.1685714Z         "int": {
2026-06-21T09:37:52.1685804Z           "complete": false,
2026-06-21T09:37:52.1685904Z           "evidence": []
2026-06-21T09:37:52.1685989Z         },
2026-06-21T09:37:52.1686076Z         "unit": {
2026-06-21T09:37:52.1686171Z           "complete": false,
2026-06-21T09:37:52.1686261Z           "evidence": []
2026-06-21T09:37:52.1686338Z         }
2026-06-21T09:37:52.1686424Z       }
2026-06-21T09:37:52.1686504Z     },
2026-06-21T09:37:52.1686581Z     {
2026-06-21T09:37:52.1686677Z       "id": "REQ-PRES-1",
2026-06-21T09:37:52.1687992Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T09:37:52.1688102Z       "requiredStages": [
2026-06-21T09:37:52.1688182Z         "impl",
2026-06-21T09:37:52.1688368Z         "unit",
2026-06-21T09:37:52.1688454Z         "int"
2026-06-21T09:37:52.1688539Z       ],
2026-06-21T09:37:52.1688626Z       "stages": {
2026-06-21T09:37:52.1688716Z         "doc": {
2026-06-21T09:37:52.1688807Z           "complete": true,
2026-06-21T09:37:52.1688898Z           "evidence": [
2026-06-21T09:37:52.1689073Z             {
2026-06-21T09:37:52.1689179Z               "path": "docs/DEFERRED.md",
2026-06-21T09:37:52.1689275Z               "line": 11
2026-06-21T09:37:52.1689359Z             }
2026-06-21T09:37:52.1689435Z           ]
2026-06-21T09:37:52.1689516Z         },
2026-06-21T09:37:52.1689597Z         "impl": {
2026-06-21T09:37:52.1689682Z           "complete": true,
2026-06-21T09:37:52.1689872Z           "evidence": [
2026-06-21T09:37:52.1689963Z             {
2026-06-21T09:37:52.1690076Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1690167Z               "line": 515
2026-06-21T09:37:52.1690244Z             },
2026-06-21T09:37:52.1690325Z             {
2026-06-21T09:37:52.1690448Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1690535Z               "line": 567
2026-06-21T09:37:52.1690616Z             },
2026-06-21T09:37:52.1690701Z             {
2026-06-21T09:37:52.1690816Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1690902Z               "line": 188
2026-06-21T09:37:52.1690992Z             },
2026-06-21T09:37:52.1691063Z             {
2026-06-21T09:37:52.1691178Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1691259Z               "line": 214
2026-06-21T09:37:52.1691340Z             },
2026-06-21T09:37:52.1691431Z             {
2026-06-21T09:37:52.1691555Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1691640Z               "line": 28
2026-06-21T09:37:52.1691726Z             },
2026-06-21T09:37:52.1691813Z             {
2026-06-21T09:37:52.1691931Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1692017Z               "line": 105
2026-06-21T09:37:52.1692099Z             },
2026-06-21T09:37:52.1692176Z             {
2026-06-21T09:37:52.1692288Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1692373Z               "line": 161
2026-06-21T09:37:52.1692454Z             },
2026-06-21T09:37:52.1692544Z             {
2026-06-21T09:37:52.1692657Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1692744Z               "line": 180
2026-06-21T09:37:52.1692825Z             },
2026-06-21T09:37:52.1692911Z             {
2026-06-21T09:37:52.1693029Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1693135Z               "line": 421
2026-06-21T09:37:52.1693221Z             },
2026-06-21T09:37:52.1693296Z             {
2026-06-21T09:37:52.1693416Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1693492Z               "line": 289
2026-06-21T09:37:52.1693582Z             },
2026-06-21T09:37:52.1693673Z             {
2026-06-21T09:37:52.1693784Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1693864Z               "line": 336
2026-06-21T09:37:52.1693945Z             },
2026-06-21T09:37:52.1694036Z             {
2026-06-21T09:37:52.1694145Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1694231Z               "line": 362
2026-06-21T09:37:52.1694322Z             },
2026-06-21T09:37:52.1694394Z             {
2026-06-21T09:37:52.1694516Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1694598Z               "line": 100
2026-06-21T09:37:52.1694685Z             }
2026-06-21T09:37:52.1694775Z           ]
2026-06-21T09:37:52.1694859Z         },
2026-06-21T09:37:52.1694940Z         "int": {
2026-06-21T09:37:52.1695031Z           "complete": true,
2026-06-21T09:37:52.1695120Z           "evidence": [
2026-06-21T09:37:52.1695200Z             {
2026-06-21T09:37:52.1695324Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1695524Z               "line": 563
2026-06-21T09:37:52.1695615Z             },
2026-06-21T09:37:52.1695706Z             {
2026-06-21T09:37:52.1695824Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1695920Z               "line": 747
2026-06-21T09:37:52.1696002Z             },
2026-06-21T09:37:52.1696083Z             {
2026-06-21T09:37:52.1696197Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1696284Z               "line": 1165
2026-06-21T09:37:52.1696369Z             }
2026-06-21T09:37:52.1696454Z           ]
2026-06-21T09:37:52.1696545Z         },
2026-06-21T09:37:52.1696716Z         "unit": {
2026-06-21T09:37:52.1696817Z           "complete": true,
2026-06-21T09:37:52.1696899Z           "evidence": [
2026-06-21T09:37:52.1697012Z             {
2026-06-21T09:37:52.1697151Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.1697237Z               "line": 674
2026-06-21T09:37:52.1697341Z             },
2026-06-21T09:37:52.1697422Z             {
2026-06-21T09:37:52.1697542Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1697623Z               "line": 238
2026-06-21T09:37:52.1697707Z             },
2026-06-21T09:37:52.1697793Z             {
2026-06-21T09:37:52.1697927Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1698027Z               "line": 269
2026-06-21T09:37:52.1698108Z             },
2026-06-21T09:37:52.1698189Z             {
2026-06-21T09:37:52.1698323Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1698408Z               "line": 305
2026-06-21T09:37:52.1698499Z             },
2026-06-21T09:37:52.1698581Z             {
2026-06-21T09:37:52.1698699Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T09:37:52.1698790Z               "line": 336
2026-06-21T09:37:52.1698867Z             },
2026-06-21T09:37:52.1699023Z             {
2026-06-21T09:37:52.1699138Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.1699234Z               "line": 1217
2026-06-21T09:37:52.1699314Z             },
2026-06-21T09:37:52.1699400Z             {
2026-06-21T09:37:52.1699506Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.1699600Z               "line": 1163
2026-06-21T09:37:52.1699681Z             }
2026-06-21T09:37:52.1699768Z           ]
2026-06-21T09:37:52.1699849Z         }
2026-06-21T09:37:52.1699929Z       }
2026-06-21T09:37:52.1700014Z     },
2026-06-21T09:37:52.1700100Z     {
2026-06-21T09:37:52.1700195Z       "id": "REQ-RC-1",
2026-06-21T09:37:52.1702190Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T09:37:52.1702306Z       "requiredStages": [
2026-06-21T09:37:52.1702388Z         "impl",
2026-06-21T09:37:52.1702482Z         "unit",
2026-06-21T09:37:52.1702554Z         "int"
2026-06-21T09:37:52.1702640Z       ],
2026-06-21T09:37:52.1702731Z       "stages": {
2026-06-21T09:37:52.1702811Z         "doc": {
2026-06-21T09:37:52.1702905Z           "complete": false,
2026-06-21T09:37:52.1703006Z           "evidence": []
2026-06-21T09:37:52.1703081Z         },
2026-06-21T09:37:52.1703165Z         "impl": {
2026-06-21T09:37:52.1703260Z           "complete": true,
2026-06-21T09:37:52.1703346Z           "evidence": [
2026-06-21T09:37:52.1703428Z             {
2026-06-21T09:37:52.1703647Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.1703733Z               "line": 944
2026-06-21T09:37:52.1703818Z             },
2026-06-21T09:37:52.1703904Z             {
2026-06-21T09:37:52.1704029Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.1704115Z               "line": 2100
2026-06-21T09:37:52.1704190Z             },
2026-06-21T09:37:52.1704272Z             {
2026-06-21T09:37:52.1704400Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1704490Z               "line": 1017
2026-06-21T09:37:52.1704572Z             },
2026-06-21T09:37:52.1704658Z             {
2026-06-21T09:37:52.1704863Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1704949Z               "line": 1051
2026-06-21T09:37:52.1705034Z             },
2026-06-21T09:37:52.1705115Z             {
2026-06-21T09:37:52.1705231Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1705317Z               "line": 22
2026-06-21T09:37:52.1705415Z             },
2026-06-21T09:37:52.1705495Z             {
2026-06-21T09:37:52.1705596Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1705681Z               "line": 701
2026-06-21T09:37:52.1705774Z             }
2026-06-21T09:37:52.1705861Z           ]
2026-06-21T09:37:52.1705947Z         },
2026-06-21T09:37:52.1706033Z         "int": {
2026-06-21T09:37:52.1706127Z           "complete": true,
2026-06-21T09:37:52.1706219Z           "evidence": [
2026-06-21T09:37:52.1706299Z             {
2026-06-21T09:37:52.1706418Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1706505Z               "line": 258
2026-06-21T09:37:52.1706591Z             },
2026-06-21T09:37:52.1706672Z             {
2026-06-21T09:37:52.1706790Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1706877Z               "line": 285
2026-06-21T09:37:52.1706962Z             },
2026-06-21T09:37:52.1707052Z             {
2026-06-21T09:37:52.1707168Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1707253Z               "line": 413
2026-06-21T09:37:52.1707343Z             }
2026-06-21T09:37:52.1707468Z           ]
2026-06-21T09:37:52.1707545Z         },
2026-06-21T09:37:52.1707629Z         "unit": {
2026-06-21T09:37:52.1707725Z           "complete": true,
2026-06-21T09:37:52.1707807Z           "evidence": [
2026-06-21T09:37:52.1707915Z             {
2026-06-21T09:37:52.1708064Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1708141Z               "line": 1415
2026-06-21T09:37:52.1708226Z             },
2026-06-21T09:37:52.1708306Z             {
2026-06-21T09:37:52.1708420Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1708516Z               "line": 1133
2026-06-21T09:37:52.1708596Z             },
2026-06-21T09:37:52.1708677Z             {
2026-06-21T09:37:52.1708768Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1708859Z               "line": 1162
2026-06-21T09:37:52.1709030Z             },
2026-06-21T09:37:52.1709113Z             {
2026-06-21T09:37:52.1709231Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1709345Z               "line": 1175
2026-06-21T09:37:52.1709446Z             }
2026-06-21T09:37:52.1709569Z           ]
2026-06-21T09:37:52.1709655Z         }
2026-06-21T09:37:52.1709742Z       }
2026-06-21T09:37:52.1709879Z     },
2026-06-21T09:37:52.1709970Z     {
2026-06-21T09:37:52.1710076Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T09:37:52.1715905Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T09:37:52.1716278Z       "requiredStages": [
2026-06-21T09:37:52.1716373Z         "doc",
2026-06-21T09:37:52.1716464Z         "impl",
2026-06-21T09:37:52.1716546Z         "unit"
2026-06-21T09:37:52.1716630Z       ],
2026-06-21T09:37:52.1716730Z       "stages": {
2026-06-21T09:37:52.1716813Z         "doc": {
2026-06-21T09:37:52.1716913Z           "complete": true,
2026-06-21T09:37:52.1716992Z           "evidence": [
2026-06-21T09:37:52.1717079Z             {
2026-06-21T09:37:52.1717179Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1717255Z               "line": 345
2026-06-21T09:37:52.1717346Z             },
2026-06-21T09:37:52.1717432Z             {
2026-06-21T09:37:52.1717531Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.1717617Z               "line": 440
2026-06-21T09:37:52.1717704Z             }
2026-06-21T09:37:52.1717785Z           ]
2026-06-21T09:37:52.1717871Z         },
2026-06-21T09:37:52.1717956Z         "impl": {
2026-06-21T09:37:52.1718043Z           "complete": true,
2026-06-21T09:37:52.1718128Z           "evidence": [
2026-06-21T09:37:52.1718214Z             {
2026-06-21T09:37:52.1718309Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1718401Z               "line": 226
2026-06-21T09:37:52.1718494Z             },
2026-06-21T09:37:52.1718581Z             {
2026-06-21T09:37:52.1718682Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1718772Z               "line": 285
2026-06-21T09:37:52.1718856Z             },
2026-06-21T09:37:52.1719033Z             {
2026-06-21T09:37:52.1719134Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1719238Z               "line": 300
2026-06-21T09:37:52.1719348Z             },
2026-06-21T09:37:52.1719434Z             {
2026-06-21T09:37:52.1719528Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1719620Z               "line": 315
2026-06-21T09:37:52.1719701Z             },
2026-06-21T09:37:52.1719787Z             {
2026-06-21T09:37:52.1719895Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1719983Z               "line": 364
2026-06-21T09:37:52.1720063Z             }
2026-06-21T09:37:52.1720153Z           ]
2026-06-21T09:37:52.1720244Z         },
2026-06-21T09:37:52.1720331Z         "int": {
2026-06-21T09:37:52.1720430Z           "complete": false,
2026-06-21T09:37:52.1720525Z           "evidence": []
2026-06-21T09:37:52.1720607Z         },
2026-06-21T09:37:52.1720692Z         "unit": {
2026-06-21T09:37:52.1720787Z           "complete": true,
2026-06-21T09:37:52.1720883Z           "evidence": [
2026-06-21T09:37:52.1721677Z             {
2026-06-21T09:37:52.1721781Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1721876Z               "line": 1190
2026-06-21T09:37:52.1721981Z             },
2026-06-21T09:37:52.1722062Z             {
2026-06-21T09:37:52.1722162Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1722239Z               "line": 1305
2026-06-21T09:37:52.1722329Z             }
2026-06-21T09:37:52.1722405Z           ]
2026-06-21T09:37:52.1722496Z         }
2026-06-21T09:37:52.1722582Z       }
2026-06-21T09:37:52.1722663Z     },
2026-06-21T09:37:52.1722753Z     {
2026-06-21T09:37:52.1722855Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T09:37:52.1727233Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T09:37:52.1727363Z       "requiredStages": [
2026-06-21T09:37:52.1727449Z         "doc",
2026-06-21T09:37:52.1727533Z         "impl",
2026-06-21T09:37:52.1727615Z         "unit"
2026-06-21T09:37:52.1727687Z       ],
2026-06-21T09:37:52.1727773Z       "stages": {
2026-06-21T09:37:52.1727867Z         "doc": {
2026-06-21T09:37:52.1727950Z           "complete": true,
2026-06-21T09:37:52.1728040Z           "evidence": [
2026-06-21T09:37:52.1728126Z             {
2026-06-21T09:37:52.1728240Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.1728336Z               "line": 461
2026-06-21T09:37:52.1728416Z             }
2026-06-21T09:37:52.1728501Z           ]
2026-06-21T09:37:52.1728579Z         },
2026-06-21T09:37:52.1728674Z         "impl": {
2026-06-21T09:37:52.1728759Z           "complete": true,
2026-06-21T09:37:52.1728850Z           "evidence": [
2026-06-21T09:37:52.1729031Z             {
2026-06-21T09:37:52.1729131Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1729219Z               "line": 421
2026-06-21T09:37:52.1729304Z             },
2026-06-21T09:37:52.1729384Z             {
2026-06-21T09:37:52.1729488Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1729583Z               "line": 437
2026-06-21T09:37:52.1729661Z             }
2026-06-21T09:37:52.1729750Z           ]
2026-06-21T09:37:52.1729840Z         },
2026-06-21T09:37:52.1729928Z         "int": {
2026-06-21T09:37:52.1730028Z           "complete": false,
2026-06-21T09:37:52.1730127Z           "evidence": []
2026-06-21T09:37:52.1730199Z         },
2026-06-21T09:37:52.1730285Z         "unit": {
2026-06-21T09:37:52.1730384Z           "complete": true,
2026-06-21T09:37:52.1730470Z           "evidence": [
2026-06-21T09:37:52.1730547Z             {
2026-06-21T09:37:52.1730656Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1730867Z               "line": 1440
2026-06-21T09:37:52.1730961Z             },
2026-06-21T09:37:52.1731042Z             {
2026-06-21T09:37:52.1731148Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1731229Z               "line": 1459
2026-06-21T09:37:52.1731314Z             },
2026-06-21T09:37:52.1731390Z             {
2026-06-21T09:37:52.1731492Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1731577Z               "line": 1471
2026-06-21T09:37:52.1731661Z             },
2026-06-21T09:37:52.1731746Z             {
2026-06-21T09:37:52.1731852Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1732045Z               "line": 1499
2026-06-21T09:37:52.1732131Z             }
2026-06-21T09:37:52.1732213Z           ]
2026-06-21T09:37:52.1732298Z         }
2026-06-21T09:37:52.1732383Z       }
2026-06-21T09:37:52.1732470Z     },
2026-06-21T09:37:52.1732551Z     {
2026-06-21T09:37:52.1732650Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T09:37:52.1737337Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T09:37:52.1737450Z       "requiredStages": [
2026-06-21T09:37:52.1737546Z         "doc",
2026-06-21T09:37:52.1737651Z         "impl",
2026-06-21T09:37:52.1737756Z         "unit"
2026-06-21T09:37:52.1737880Z       ],
2026-06-21T09:37:52.1738009Z       "stages": {
2026-06-21T09:37:52.1738151Z         "doc": {
2026-06-21T09:37:52.1738276Z           "complete": true,
2026-06-21T09:37:52.1738404Z           "evidence": [
2026-06-21T09:37:52.1738638Z             {
2026-06-21T09:37:52.1738814Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T09:37:52.1739024Z               "line": 447
2026-06-21T09:37:52.1739139Z             }
2026-06-21T09:37:52.1739344Z           ]
2026-06-21T09:37:52.1739435Z         },
2026-06-21T09:37:52.1739535Z         "impl": {
2026-06-21T09:37:52.1739639Z           "complete": true,
2026-06-21T09:37:52.1739730Z           "evidence": [
2026-06-21T09:37:52.1739821Z             {
2026-06-21T09:37:52.1739930Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1740019Z               "line": 395
2026-06-21T09:37:52.1740143Z             },
2026-06-21T09:37:52.1740282Z             {
2026-06-21T09:37:52.1740391Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1740478Z               "line": 411
2026-06-21T09:37:52.1740578Z             },
2026-06-21T09:37:52.1740663Z             {
2026-06-21T09:37:52.1740817Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1741054Z               "line": 454
2026-06-21T09:37:52.1741145Z             },
2026-06-21T09:37:52.1741274Z             {
2026-06-21T09:37:52.1741369Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1741465Z               "line": 468
2026-06-21T09:37:52.1741550Z             },
2026-06-21T09:37:52.1741636Z             {
2026-06-21T09:37:52.1741742Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1741841Z               "line": 479
2026-06-21T09:37:52.1741922Z             }
2026-06-21T09:37:52.1742003Z           ]
2026-06-21T09:37:52.1742081Z         },
2026-06-21T09:37:52.1742165Z         "int": {
2026-06-21T09:37:52.1742360Z           "complete": false,
2026-06-21T09:37:52.1742450Z           "evidence": []
2026-06-21T09:37:52.1742534Z         },
2026-06-21T09:37:52.1742624Z         "unit": {
2026-06-21T09:37:52.1742715Z           "complete": true,
2026-06-21T09:37:52.1742811Z           "evidence": [
2026-06-21T09:37:52.1742891Z             {
2026-06-21T09:37:52.1743011Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1743101Z               "line": 1381
2026-06-21T09:37:52.1743191Z             },
2026-06-21T09:37:52.1743282Z             {
2026-06-21T09:37:52.1743374Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1743469Z               "line": 1402
2026-06-21T09:37:52.1743554Z             },
2026-06-21T09:37:52.1743631Z             {
2026-06-21T09:37:52.1743726Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1743821Z               "line": 1423
2026-06-21T09:37:52.1743916Z             }
2026-06-21T09:37:52.1743999Z           ]
2026-06-21T09:37:52.1744083Z         }
2026-06-21T09:37:52.1744179Z       }
2026-06-21T09:37:52.1744270Z     },
2026-06-21T09:37:52.1744347Z     {
2026-06-21T09:37:52.1744446Z       "id": "REQ-RCVIEW-1",
2026-06-21T09:37:52.1749136Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T09:37:52.1749269Z       "requiredStages": [
2026-06-21T09:37:52.1749355Z         "doc",
2026-06-21T09:37:52.1749461Z         "impl",
2026-06-21T09:37:52.1749560Z         "unit",
2026-06-21T09:37:52.1749646Z         "int"
2026-06-21T09:37:52.1749729Z       ],
2026-06-21T09:37:52.1749822Z       "stages": {
2026-06-21T09:37:52.1749904Z         "doc": {
2026-06-21T09:37:52.1750009Z           "complete": true,
2026-06-21T09:37:52.1750100Z           "evidence": [
2026-06-21T09:37:52.1750189Z             {
2026-06-21T09:37:52.1750290Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1750377Z               "line": 342
2026-06-21T09:37:52.1750466Z             }
2026-06-21T09:37:52.1750660Z           ]
2026-06-21T09:37:52.1750748Z         },
2026-06-21T09:37:52.1750837Z         "impl": {
2026-06-21T09:37:52.1750932Z           "complete": true,
2026-06-21T09:37:52.1751072Z           "evidence": [
2026-06-21T09:37:52.1751157Z             {
2026-06-21T09:37:52.1751290Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T09:37:52.1751382Z               "line": 375
2026-06-21T09:37:52.1751467Z             },
2026-06-21T09:37:52.1751547Z             {
2026-06-21T09:37:52.1751663Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.1751758Z               "line": 682
2026-06-21T09:37:52.1751964Z             },
2026-06-21T09:37:52.1752054Z             {
2026-06-21T09:37:52.1752168Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.1752259Z               "line": 693
2026-06-21T09:37:52.1752340Z             },
2026-06-21T09:37:52.1752420Z             {
2026-06-21T09:37:52.1752535Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1752631Z               "line": 41
2026-06-21T09:37:52.1752720Z             },
2026-06-21T09:37:52.1752801Z             {
2026-06-21T09:37:52.1752925Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1753005Z               "line": 62
2026-06-21T09:37:52.1753099Z             },
2026-06-21T09:37:52.1753184Z             {
2026-06-21T09:37:52.1753285Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1753376Z               "line": 309
2026-06-21T09:37:52.1753456Z             },
2026-06-21T09:37:52.1753547Z             {
2026-06-21T09:37:52.1753643Z               "path": "crates/spt/src/rc.rs",
2026-06-21T09:37:52.1753738Z               "line": 701
2026-06-21T09:37:52.1753814Z             }
2026-06-21T09:37:52.1753886Z           ]
2026-06-21T09:37:52.1753976Z         },
2026-06-21T09:37:52.1754057Z         "int": {
2026-06-21T09:37:52.1754152Z           "complete": true,
2026-06-21T09:37:52.1754234Z           "evidence": [
2026-06-21T09:37:52.1754324Z             {
2026-06-21T09:37:52.1754448Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1754525Z               "line": 913
2026-06-21T09:37:52.1754611Z             },
2026-06-21T09:37:52.1754692Z             {
2026-06-21T09:37:52.1754816Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1754898Z               "line": 953
2026-06-21T09:37:52.1754981Z             },
2026-06-21T09:37:52.1755063Z             {
2026-06-21T09:37:52.1755179Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1755269Z               "line": 1000
2026-06-21T09:37:52.1755354Z             },
2026-06-21T09:37:52.1755436Z             {
2026-06-21T09:37:52.1755542Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1755630Z               "line": 1112
2026-06-21T09:37:52.1755711Z             }
2026-06-21T09:37:52.1755792Z           ]
2026-06-21T09:37:52.1755877Z         },
2026-06-21T09:37:52.1755966Z         "unit": {
2026-06-21T09:37:52.1756056Z           "complete": true,
2026-06-21T09:37:52.1756138Z           "evidence": [
2026-06-21T09:37:52.1756229Z             {
2026-06-21T09:37:52.1756352Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1756438Z               "line": 175
2026-06-21T09:37:52.1756529Z             },
2026-06-21T09:37:52.1756609Z             {
2026-06-21T09:37:52.1756729Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T09:37:52.1756825Z               "line": 195
2026-06-21T09:37:52.1756915Z             }
2026-06-21T09:37:52.1757010Z           ]
2026-06-21T09:37:52.1757111Z         }
2026-06-21T09:37:52.1757253Z       }
2026-06-21T09:37:52.1757397Z     },
2026-06-21T09:37:52.1757520Z     {
2026-06-21T09:37:52.1757654Z       "id": "REQ-REACH-1",
2026-06-21T09:37:52.1757816Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T09:37:52.1757916Z       "requiredStages": [
2026-06-21T09:37:52.1758089Z         "impl",
2026-06-21T09:37:52.1758182Z         "unit",
2026-06-21T09:37:52.1758263Z         "int"
2026-06-21T09:37:52.1758353Z       ],
2026-06-21T09:37:52.1758439Z       "stages": {
2026-06-21T09:37:52.1758523Z         "doc": {
2026-06-21T09:37:52.1758622Z           "complete": false,
2026-06-21T09:37:52.1758700Z           "evidence": []
2026-06-21T09:37:52.1758782Z         },
2026-06-21T09:37:52.1758866Z         "impl": {
2026-06-21T09:37:52.1759062Z           "complete": true,
2026-06-21T09:37:52.1759153Z           "evidence": [
2026-06-21T09:37:52.1759243Z             {
2026-06-21T09:37:52.1759368Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.1759558Z               "line": 682
2026-06-21T09:37:52.1759649Z             },
2026-06-21T09:37:52.1759734Z             {
2026-06-21T09:37:52.1759843Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:37:52.1759920Z               "line": 76
2026-06-21T09:37:52.1760011Z             },
2026-06-21T09:37:52.1760102Z             {
2026-06-21T09:37:52.1760211Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:37:52.1760303Z               "line": 222
2026-06-21T09:37:52.1760392Z             },
2026-06-21T09:37:52.1760483Z             {
2026-06-21T09:37:52.1760589Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:37:52.1760683Z               "line": 422
2026-06-21T09:37:52.1760769Z             },
2026-06-21T09:37:52.1760845Z             {
2026-06-21T09:37:52.1760952Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:37:52.1761045Z               "line": 529
2026-06-21T09:37:52.1761130Z             },
2026-06-21T09:37:52.1761230Z             {
2026-06-21T09:37:52.1761346Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:37:52.1761445Z               "line": 39
2026-06-21T09:37:52.1761526Z             },
2026-06-21T09:37:52.1761617Z             {
2026-06-21T09:37:52.1761717Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1761816Z               "line": 301
2026-06-21T09:37:52.1761908Z             },
2026-06-21T09:37:52.1761989Z             {
2026-06-21T09:37:52.1762098Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:37:52.1762179Z               "line": 88
2026-06-21T09:37:52.1762265Z             },
2026-06-21T09:37:52.1762351Z             {
2026-06-21T09:37:52.1762465Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:37:52.1762547Z               "line": 98
2026-06-21T09:37:52.1762632Z             },
2026-06-21T09:37:52.1762709Z             {
2026-06-21T09:37:52.1762824Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1762924Z               "line": 233
2026-06-21T09:37:52.1763004Z             }
2026-06-21T09:37:52.1763095Z           ]
2026-06-21T09:37:52.1763177Z         },
2026-06-21T09:37:52.1763266Z         "int": {
2026-06-21T09:37:52.1763356Z           "complete": true,
2026-06-21T09:37:52.1763441Z           "evidence": [
2026-06-21T09:37:52.1763537Z             {
2026-06-21T09:37:52.1763668Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1763759Z               "line": 415
2026-06-21T09:37:52.1763850Z             },
2026-06-21T09:37:52.1763932Z             {
2026-06-21T09:37:52.1764059Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1764141Z               "line": 520
2026-06-21T09:37:52.1764236Z             },
2026-06-21T09:37:52.1764317Z             {
2026-06-21T09:37:52.1764437Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1764527Z               "line": 998
2026-06-21T09:37:52.1764612Z             },
2026-06-21T09:37:52.1764698Z             {
2026-06-21T09:37:52.1764804Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1764894Z               "line": 1383
2026-06-21T09:37:52.1764979Z             }
2026-06-21T09:37:52.1765066Z           ]
2026-06-21T09:37:52.1765152Z         },
2026-06-21T09:37:52.1765233Z         "unit": {
2026-06-21T09:37:52.1765443Z           "complete": true,
2026-06-21T09:37:52.1765533Z           "evidence": [
2026-06-21T09:37:52.1765618Z             {
2026-06-21T09:37:52.1765729Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:37:52.1765819Z               "line": 639
2026-06-21T09:37:52.1765910Z             },
2026-06-21T09:37:52.1766134Z             {
2026-06-21T09:37:52.1766247Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T09:37:52.1766338Z               "line": 660
2026-06-21T09:37:52.1766433Z             },
2026-06-21T09:37:52.1766512Z             {
2026-06-21T09:37:52.1770780Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T09:37:52.1771033Z               "line": 768
2026-06-21T09:37:52.1771120Z             },
2026-06-21T09:37:52.1771211Z             {
2026-06-21T09:37:52.1771343Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T09:37:52.1771440Z               "line": 93
2026-06-21T09:37:52.1771521Z             },
2026-06-21T09:37:52.1771614Z             {
2026-06-21T09:37:52.1771737Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T09:37:52.1771820Z               "line": 224
2026-06-21T09:37:52.1771901Z             },
2026-06-21T09:37:52.1771981Z             {
2026-06-21T09:37:52.1772091Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:37:52.1772168Z               "line": 96
2026-06-21T09:37:52.1772258Z             },
2026-06-21T09:37:52.1772344Z             {
2026-06-21T09:37:52.1772459Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T09:37:52.1772544Z               "line": 146
2026-06-21T09:37:52.1772625Z             },
2026-06-21T09:37:52.1772721Z             {
2026-06-21T09:37:52.1772845Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.1772926Z               "line": 698
2026-06-21T09:37:52.1773015Z             },
2026-06-21T09:37:52.1773098Z             {
2026-06-21T09:37:52.1773216Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:37:52.1773297Z               "line": 118
2026-06-21T09:37:52.1773384Z             },
2026-06-21T09:37:52.1773460Z             {
2026-06-21T09:37:52.1773569Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T09:37:52.1773655Z               "line": 148
2026-06-21T09:37:52.1773738Z             },
2026-06-21T09:37:52.1773822Z             {
2026-06-21T09:37:52.1773945Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1774026Z               "line": 928
2026-06-21T09:37:52.1774116Z             }
2026-06-21T09:37:52.1774191Z           ]
2026-06-21T09:37:52.1774280Z         }
2026-06-21T09:37:52.1774357Z       }
2026-06-21T09:37:52.1774449Z     },
2026-06-21T09:37:52.1774534Z     {
2026-06-21T09:37:52.1774629Z       "id": "REQ-REACH-2",
2026-06-21T09:37:52.1774796Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T09:37:52.1774882Z       "requiredStages": [],
2026-06-21T09:37:52.1774968Z       "stages": {
2026-06-21T09:37:52.1775049Z         "doc": {
2026-06-21T09:37:52.1775140Z           "complete": false,
2026-06-21T09:37:52.1775229Z           "evidence": []
2026-06-21T09:37:52.1775317Z         },
2026-06-21T09:37:52.1775407Z         "impl": {
2026-06-21T09:37:52.1775492Z           "complete": false,
2026-06-21T09:37:52.1775583Z           "evidence": []
2026-06-21T09:37:52.1775660Z         },
2026-06-21T09:37:52.1775750Z         "int": {
2026-06-21T09:37:52.1775840Z           "complete": false,
2026-06-21T09:37:52.1775931Z           "evidence": []
2026-06-21T09:37:52.1776018Z         },
2026-06-21T09:37:52.1776102Z         "unit": {
2026-06-21T09:37:52.1776202Z           "complete": false,
2026-06-21T09:37:52.1776304Z           "evidence": []
2026-06-21T09:37:52.1776398Z         }
2026-06-21T09:37:52.1776480Z       }
2026-06-21T09:37:52.1776571Z     },
2026-06-21T09:37:52.1776662Z     {
2026-06-21T09:37:52.1776769Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T09:37:52.1780435Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T09:37:52.1780769Z       "requiredStages": [
2026-06-21T09:37:52.1780855Z         "doc",
2026-06-21T09:37:52.1780936Z         "impl",
2026-06-21T09:37:52.1781021Z         "unit",
2026-06-21T09:37:52.1781104Z         "int"
2026-06-21T09:37:52.1781197Z       ],
2026-06-21T09:37:52.1781278Z       "stages": {
2026-06-21T09:37:52.1781360Z         "doc": {
2026-06-21T09:37:52.1781457Z           "complete": true,
2026-06-21T09:37:52.1781540Z           "evidence": [
2026-06-21T09:37:52.1781627Z             {
2026-06-21T09:37:52.1781723Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1781823Z               "line": 372
2026-06-21T09:37:52.1781904Z             }
2026-06-21T09:37:52.1781995Z           ]
2026-06-21T09:37:52.1782081Z         },
2026-06-21T09:37:52.1782165Z         "impl": {
2026-06-21T09:37:52.1782251Z           "complete": true,
2026-06-21T09:37:52.1782341Z           "evidence": [
2026-06-21T09:37:52.1782432Z             {
2026-06-21T09:37:52.1782546Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1782636Z               "line": 110
2026-06-21T09:37:52.1782723Z             }
2026-06-21T09:37:52.1782809Z           ]
2026-06-21T09:37:52.1782894Z         },
2026-06-21T09:37:52.1782981Z         "int": {
2026-06-21T09:37:52.1783076Z           "complete": true,
2026-06-21T09:37:52.1783157Z           "evidence": [
2026-06-21T09:37:52.1783242Z             {
2026-06-21T09:37:52.1783381Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T09:37:52.1783467Z               "line": 26
2026-06-21T09:37:52.1783566Z             }
2026-06-21T09:37:52.1783649Z           ]
2026-06-21T09:37:52.1783738Z         },
2026-06-21T09:37:52.1783819Z         "unit": {
2026-06-21T09:37:52.1783900Z           "complete": true,
2026-06-21T09:37:52.1783992Z           "evidence": [
2026-06-21T09:37:52.1784072Z             {
2026-06-21T09:37:52.1784186Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T09:37:52.1784268Z               "line": 320
2026-06-21T09:37:52.1784354Z             }
2026-06-21T09:37:52.1784424Z           ]
2026-06-21T09:37:52.1784509Z         }
2026-06-21T09:37:52.1784590Z       }
2026-06-21T09:37:52.1784671Z     },
2026-06-21T09:37:52.1784755Z     {
2026-06-21T09:37:52.1784836Z       "id": "REQ-REL-1",
2026-06-21T09:37:52.1785208Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T09:37:52.1785309Z       "requiredStages": [
2026-06-21T09:37:52.1785389Z         "doc",
2026-06-21T09:37:52.1785484Z         "impl"
2026-06-21T09:37:52.1785567Z       ],
2026-06-21T09:37:52.1785652Z       "stages": {
2026-06-21T09:37:52.1785723Z         "doc": {
2026-06-21T09:37:52.1785818Z           "complete": true,
2026-06-21T09:37:52.1785906Z           "evidence": [
2026-06-21T09:37:52.1785996Z             {
2026-06-21T09:37:52.1786216Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T09:37:52.1786438Z               "line": 3
2026-06-21T09:37:52.1786531Z             }
2026-06-21T09:37:52.1786615Z           ]
2026-06-21T09:37:52.1786701Z         },
2026-06-21T09:37:52.1786787Z         "impl": {
2026-06-21T09:37:52.1786878Z           "complete": true,
2026-06-21T09:37:52.1786987Z           "evidence": [
2026-06-21T09:37:52.1787068Z             {
2026-06-21T09:37:52.1787198Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T09:37:52.1787282Z               "line": 11
2026-06-21T09:37:52.1787367Z             },
2026-06-21T09:37:52.1787458Z             {
2026-06-21T09:37:52.1787647Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1787741Z               "line": 265
2026-06-21T09:37:52.1787823Z             }
2026-06-21T09:37:52.1787904Z           ]
2026-06-21T09:37:52.1787990Z         },
2026-06-21T09:37:52.1788075Z         "int": {
2026-06-21T09:37:52.1788172Z           "complete": false,
2026-06-21T09:37:52.1788257Z           "evidence": []
2026-06-21T09:37:52.1788342Z         },
2026-06-21T09:37:52.1788429Z         "unit": {
2026-06-21T09:37:52.1788515Z           "complete": false,
2026-06-21T09:37:52.1788605Z           "evidence": []
2026-06-21T09:37:52.1788690Z         }
2026-06-21T09:37:52.1788773Z       }
2026-06-21T09:37:52.1788853Z     },
2026-06-21T09:37:52.1789034Z     {
2026-06-21T09:37:52.1789116Z       "id": "REQ-REL-2",
2026-06-21T09:37:52.1789611Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T09:37:52.1789712Z       "requiredStages": [
2026-06-21T09:37:52.1789793Z         "impl",
2026-06-21T09:37:52.1789877Z         "int"
2026-06-21T09:37:52.1789962Z       ],
2026-06-21T09:37:52.1790053Z       "stages": {
2026-06-21T09:37:52.1790134Z         "doc": {
2026-06-21T09:37:52.1790227Z           "complete": true,
2026-06-21T09:37:52.1790317Z           "evidence": [
2026-06-21T09:37:52.1790404Z             {
2026-06-21T09:37:52.1790523Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T09:37:52.1790608Z               "line": 6
2026-06-21T09:37:52.1790700Z             }
2026-06-21T09:37:52.1790785Z           ]
2026-06-21T09:37:52.1790866Z         },
2026-06-21T09:37:52.1790952Z         "impl": {
2026-06-21T09:37:52.1791048Z           "complete": true,
2026-06-21T09:37:52.1791139Z           "evidence": [
2026-06-21T09:37:52.1791218Z             {
2026-06-21T09:37:52.1791339Z               "path": ".github/workflows/release.yml",
2026-06-21T09:37:52.1791420Z               "line": 16
2026-06-21T09:37:52.1791510Z             },
2026-06-21T09:37:52.1791586Z             {
2026-06-21T09:37:52.1791697Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1791782Z               "line": 352
2026-06-21T09:37:52.1791858Z             },
2026-06-21T09:37:52.1791940Z             {
2026-06-21T09:37:52.1792059Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1792149Z               "line": 426
2026-06-21T09:37:52.1792235Z             },
2026-06-21T09:37:52.1792322Z             {
2026-06-21T09:37:52.1792429Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1792511Z               "line": 588
2026-06-21T09:37:52.1792589Z             },
2026-06-21T09:37:52.1792665Z             {
2026-06-21T09:37:52.1792772Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1792853Z               "line": 720
2026-06-21T09:37:52.1792935Z             }
2026-06-21T09:37:52.1793022Z           ]
2026-06-21T09:37:52.1793101Z         },
2026-06-21T09:37:52.1793182Z         "int": {
2026-06-21T09:37:52.1793269Z           "complete": true,
2026-06-21T09:37:52.1793360Z           "evidence": [
2026-06-21T09:37:52.1793444Z             {
2026-06-21T09:37:52.1793579Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T09:37:52.1793674Z               "line": 13
2026-06-21T09:37:52.1793865Z             }
2026-06-21T09:37:52.1793960Z           ]
2026-06-21T09:37:52.1794041Z         },
2026-06-21T09:37:52.1794127Z         "unit": {
2026-06-21T09:37:52.1794223Z           "complete": false,
2026-06-21T09:37:52.1794312Z           "evidence": []
2026-06-21T09:37:52.1794398Z         }
2026-06-21T09:37:52.1794480Z       }
2026-06-21T09:37:52.1794567Z     },
2026-06-21T09:37:52.1794646Z     {
2026-06-21T09:37:52.1794746Z       "id": "REQ-REL-3",
2026-06-21T09:37:52.1795160Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T09:37:52.1795344Z       "requiredStages": [
2026-06-21T09:37:52.1795434Z         "impl",
2026-06-21T09:37:52.1795516Z         "unit"
2026-06-21T09:37:52.1795593Z       ],
2026-06-21T09:37:52.1795673Z       "stages": {
2026-06-21T09:37:52.1795754Z         "doc": {
2026-06-21T09:37:52.1795845Z           "complete": false,
2026-06-21T09:37:52.1795950Z           "evidence": []
2026-06-21T09:37:52.1796031Z         },
2026-06-21T09:37:52.1796102Z         "impl": {
2026-06-21T09:37:52.1796193Z           "complete": true,
2026-06-21T09:37:52.1796278Z           "evidence": [
2026-06-21T09:37:52.1796369Z             {
2026-06-21T09:37:52.1796494Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.1796593Z               "line": 237
2026-06-21T09:37:52.1796679Z             },
2026-06-21T09:37:52.1796761Z             {
2026-06-21T09:37:52.1796884Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.1796970Z               "line": 289
2026-06-21T09:37:52.1797066Z             },
2026-06-21T09:37:52.1797152Z             {
2026-06-21T09:37:52.1797261Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1797357Z               "line": 329
2026-06-21T09:37:52.1797443Z             },
2026-06-21T09:37:52.1797523Z             {
2026-06-21T09:37:52.1797614Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1797710Z               "line": 353
2026-06-21T09:37:52.1797796Z             },
2026-06-21T09:37:52.1797880Z             {
2026-06-21T09:37:52.1797989Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.1798080Z               "line": 394
2026-06-21T09:37:52.1798169Z             }
2026-06-21T09:37:52.1798254Z           ]
2026-06-21T09:37:52.1798345Z         },
2026-06-21T09:37:52.1798431Z         "int": {
2026-06-21T09:37:52.1798526Z           "complete": false,
2026-06-21T09:37:52.1798611Z           "evidence": []
2026-06-21T09:37:52.1798703Z         },
2026-06-21T09:37:52.1798789Z         "unit": {
2026-06-21T09:37:52.1798883Z           "complete": true,
2026-06-21T09:37:52.1799089Z           "evidence": [
2026-06-21T09:37:52.1799174Z             {
2026-06-21T09:37:52.1799280Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.1799370Z               "line": 1045
2026-06-21T09:37:52.1799470Z             },
2026-06-21T09:37:52.1799570Z             {
2026-06-21T09:37:52.1799676Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.1799775Z               "line": 1104
2026-06-21T09:37:52.1799861Z             }
2026-06-21T09:37:52.1799938Z           ]
2026-06-21T09:37:52.1800019Z         }
2026-06-21T09:37:52.1800104Z       }
2026-06-21T09:37:52.1800195Z     },
2026-06-21T09:37:52.1800272Z     {
2026-06-21T09:37:52.1800377Z       "id": "REQ-RUN-PICKER",
2026-06-21T09:37:52.1805074Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T09:37:52.1805408Z       "requiredStages": [
2026-06-21T09:37:52.1805493Z         "doc",
2026-06-21T09:37:52.1805568Z         "impl",
2026-06-21T09:37:52.1805653Z         "unit"
2026-06-21T09:37:52.1805740Z       ],
2026-06-21T09:37:52.1805825Z       "stages": {
2026-06-21T09:37:52.1805919Z         "doc": {
2026-06-21T09:37:52.1806004Z           "complete": true,
2026-06-21T09:37:52.1806100Z           "evidence": [
2026-06-21T09:37:52.1806186Z             {
2026-06-21T09:37:52.1806285Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1806381Z               "line": 349
2026-06-21T09:37:52.1806462Z             }
2026-06-21T09:37:52.1806571Z           ]
2026-06-21T09:37:52.1806663Z         },
2026-06-21T09:37:52.1806767Z         "impl": {
2026-06-21T09:37:52.1806867Z           "complete": true,
2026-06-21T09:37:52.1806968Z           "evidence": [
2026-06-21T09:37:52.1807064Z             {
2026-06-21T09:37:52.1807172Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1807277Z               "line": 958
2026-06-21T09:37:52.1807360Z             },
2026-06-21T09:37:52.1807449Z             {
2026-06-21T09:37:52.1807554Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1807646Z               "line": 968
2026-06-21T09:37:52.1807735Z             },
2026-06-21T09:37:52.1807812Z             {
2026-06-21T09:37:52.1807927Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1808004Z               "line": 9
2026-06-21T09:37:52.1808087Z             },
2026-06-21T09:37:52.1808169Z             {
2026-06-21T09:37:52.1808285Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T09:37:52.1808388Z               "line": 67
2026-06-21T09:37:52.1808464Z             },
2026-06-21T09:37:52.1808549Z             {
2026-06-21T09:37:52.1808659Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T09:37:52.1808752Z               "line": 16
2026-06-21T09:37:52.1808833Z             },
2026-06-21T09:37:52.1808929Z             {
2026-06-21T09:37:52.1809124Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T09:37:52.1809215Z               "line": 254
2026-06-21T09:37:52.1809306Z             },
2026-06-21T09:37:52.1809382Z             {
2026-06-21T09:37:52.1809520Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1809602Z               "line": 11
2026-06-21T09:37:52.1809687Z             },
2026-06-21T09:37:52.1809777Z             {
2026-06-21T09:37:52.1809883Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1809968Z               "line": 115
2026-06-21T09:37:52.1810049Z             },
2026-06-21T09:37:52.1810144Z             {
2026-06-21T09:37:52.1810246Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1810335Z               "line": 554
2026-06-21T09:37:52.1810421Z             },
2026-06-21T09:37:52.1810503Z             {
2026-06-21T09:37:52.1810612Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1810813Z               "line": 635
2026-06-21T09:37:52.1810913Z             },
2026-06-21T09:37:52.1810988Z             {
2026-06-21T09:37:52.1811092Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1811174Z               "line": 694
2026-06-21T09:37:52.1811258Z             },
2026-06-21T09:37:52.1811348Z             {
2026-06-21T09:37:52.1811452Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1811554Z               "line": 747
2026-06-21T09:37:52.1811625Z             },
2026-06-21T09:37:52.1811709Z             {
2026-06-21T09:37:52.1811830Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1812015Z               "line": 785
2026-06-21T09:37:52.1812091Z             },
2026-06-21T09:37:52.1812173Z             {
2026-06-21T09:37:52.1812283Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1812372Z               "line": 8
2026-06-21T09:37:52.1812455Z             }
2026-06-21T09:37:52.1812540Z           ]
2026-06-21T09:37:52.1812621Z         },
2026-06-21T09:37:52.1812711Z         "int": {
2026-06-21T09:37:52.1812793Z           "complete": false,
2026-06-21T09:37:52.1812878Z           "evidence": []
2026-06-21T09:37:52.1812964Z         },
2026-06-21T09:37:52.1813046Z         "unit": {
2026-06-21T09:37:52.1813151Z           "complete": true,
2026-06-21T09:37:52.1813235Z           "evidence": [
2026-06-21T09:37:52.1813317Z             {
2026-06-21T09:37:52.1813418Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1813508Z               "line": 7638
2026-06-21T09:37:52.1813589Z             },
2026-06-21T09:37:52.1813671Z             {
2026-06-21T09:37:52.1813790Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1813874Z               "line": 7649
2026-06-21T09:37:52.1813959Z             },
2026-06-21T09:37:52.1814036Z             {
2026-06-21T09:37:52.1814156Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1814245Z               "line": 879
2026-06-21T09:37:52.1814341Z             },
2026-06-21T09:37:52.1814428Z             {
2026-06-21T09:37:52.1814537Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1814627Z               "line": 928
2026-06-21T09:37:52.1814709Z             },
2026-06-21T09:37:52.1814794Z             {
2026-06-21T09:37:52.1814894Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1814985Z               "line": 979
2026-06-21T09:37:52.1815071Z             },
2026-06-21T09:37:52.1815157Z             {
2026-06-21T09:37:52.1815261Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1815343Z               "line": 996
2026-06-21T09:37:52.1815433Z             },
2026-06-21T09:37:52.1815519Z             {
2026-06-21T09:37:52.1815635Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1815734Z               "line": 1005
2026-06-21T09:37:52.1815809Z             },
2026-06-21T09:37:52.1815896Z             {
2026-06-21T09:37:52.1816007Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1816100Z               "line": 1016
2026-06-21T09:37:52.1816186Z             },
2026-06-21T09:37:52.1816267Z             {
2026-06-21T09:37:52.1816380Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1816474Z               "line": 1038
2026-06-21T09:37:52.1816564Z             },
2026-06-21T09:37:52.1816651Z             {
2026-06-21T09:37:52.1816765Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1816860Z               "line": 1057
2026-06-21T09:37:52.1816946Z             },
2026-06-21T09:37:52.1817032Z             {
2026-06-21T09:37:52.1817141Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1817237Z               "line": 1107
2026-06-21T09:37:52.1817314Z             },
2026-06-21T09:37:52.1817399Z             {
2026-06-21T09:37:52.1817508Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1817600Z               "line": 1136
2026-06-21T09:37:52.1817799Z             },
2026-06-21T09:37:52.1817886Z             {
2026-06-21T09:37:52.1818004Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1818085Z               "line": 1149
2026-06-21T09:37:52.1818177Z             },
2026-06-21T09:37:52.1818263Z             {
2026-06-21T09:37:52.1818381Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1818482Z               "line": 1215
2026-06-21T09:37:52.1818568Z             },
2026-06-21T09:37:52.1818657Z             {
2026-06-21T09:37:52.1818763Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1818855Z               "line": 1256
2026-06-21T09:37:52.1819085Z             },
2026-06-21T09:37:52.1819167Z             {
2026-06-21T09:37:52.1819285Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1819374Z               "line": 1272
2026-06-21T09:37:52.1819465Z             },
2026-06-21T09:37:52.1819551Z             {
2026-06-21T09:37:52.1819665Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1819751Z               "line": 491
2026-06-21T09:37:52.1819838Z             },
2026-06-21T09:37:52.1819928Z             {
2026-06-21T09:37:52.1820037Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1820124Z               "line": 506
2026-06-21T09:37:52.1820214Z             },
2026-06-21T09:37:52.1820294Z             {
2026-06-21T09:37:52.1820400Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1820487Z               "line": 524
2026-06-21T09:37:52.1820571Z             },
2026-06-21T09:37:52.1820643Z             {
2026-06-21T09:37:52.1820748Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1820834Z               "line": 546
2026-06-21T09:37:52.1820919Z             },
2026-06-21T09:37:52.1821005Z             {
2026-06-21T09:37:52.1821111Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1821205Z               "line": 556
2026-06-21T09:37:52.1821296Z             },
2026-06-21T09:37:52.1821383Z             {
2026-06-21T09:37:52.1821487Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T09:37:52.1821572Z               "line": 582
2026-06-21T09:37:52.1821652Z             }
2026-06-21T09:37:52.1821734Z           ]
2026-06-21T09:37:52.1821818Z         }
2026-06-21T09:37:52.1821898Z       }
2026-06-21T09:37:52.1821983Z     },
2026-06-21T09:37:52.1822070Z     {
2026-06-21T09:37:52.1822161Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T09:37:52.1826807Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T09:37:52.1827043Z       "requiredStages": [
2026-06-21T09:37:52.1827139Z         "doc",
2026-06-21T09:37:52.1827221Z         "impl",
2026-06-21T09:37:52.1827311Z         "unit"
2026-06-21T09:37:52.1827391Z       ],
2026-06-21T09:37:52.1827473Z       "stages": {
2026-06-21T09:37:52.1827555Z         "doc": {
2026-06-21T09:37:52.1827659Z           "complete": true,
2026-06-21T09:37:52.1827749Z           "evidence": [
2026-06-21T09:37:52.1827822Z             {
2026-06-21T09:37:52.1827926Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1828103Z               "line": 390
2026-06-21T09:37:52.1828198Z             }
2026-06-21T09:37:52.1828274Z           ]
2026-06-21T09:37:52.1828364Z         },
2026-06-21T09:37:52.1828451Z         "impl": {
2026-06-21T09:37:52.1828532Z           "complete": true,
2026-06-21T09:37:52.1828617Z           "evidence": [
2026-06-21T09:37:52.1828698Z             {
2026-06-21T09:37:52.1828828Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1828912Z               "line": 39
2026-06-21T09:37:52.1829085Z             },
2026-06-21T09:37:52.1829176Z             {
2026-06-21T09:37:52.1829285Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1829381Z               "line": 79
2026-06-21T09:37:52.1829463Z             },
2026-06-21T09:37:52.1829542Z             {
2026-06-21T09:37:52.1829655Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1829736Z               "line": 162
2026-06-21T09:37:52.1829831Z             }
2026-06-21T09:37:52.1829911Z           ]
2026-06-21T09:37:52.1830001Z         },
2026-06-21T09:37:52.1830083Z         "int": {
2026-06-21T09:37:52.1830183Z           "complete": false,
2026-06-21T09:37:52.1830273Z           "evidence": []
2026-06-21T09:37:52.1830350Z         },
2026-06-21T09:37:52.1830431Z         "unit": {
2026-06-21T09:37:52.1830512Z           "complete": true,
2026-06-21T09:37:52.1830597Z           "evidence": [
2026-06-21T09:37:52.1830679Z             {
2026-06-21T09:37:52.1830788Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1830873Z               "line": 206
2026-06-21T09:37:52.1830955Z             },
2026-06-21T09:37:52.1831042Z             {
2026-06-21T09:37:52.1831151Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1831236Z               "line": 222
2026-06-21T09:37:52.1831323Z             },
2026-06-21T09:37:52.1831413Z             {
2026-06-21T09:37:52.1831532Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1831619Z               "line": 238
2026-06-21T09:37:52.1831705Z             },
2026-06-21T09:37:52.1831779Z             {
2026-06-21T09:37:52.1831895Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1831982Z               "line": 251
2026-06-21T09:37:52.1832066Z             },
2026-06-21T09:37:52.1832156Z             {
2026-06-21T09:37:52.1832265Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T09:37:52.1832360Z               "line": 258
2026-06-21T09:37:52.1832439Z             }
2026-06-21T09:37:52.1832529Z           ]
2026-06-21T09:37:52.1832611Z         }
2026-06-21T09:37:52.1832703Z       }
2026-06-21T09:37:52.1832787Z     },
2026-06-21T09:37:52.1832873Z     {
2026-06-21T09:37:52.1832969Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T09:37:52.1833150Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T09:37:52.1833246Z       "requiredStages": [
2026-06-21T09:37:52.1833326Z         "impl",
2026-06-21T09:37:52.1833421Z         "unit"
2026-06-21T09:37:52.1833497Z       ],
2026-06-21T09:37:52.1833580Z       "stages": {
2026-06-21T09:37:52.1833665Z         "doc": {
2026-06-21T09:37:52.1833750Z           "complete": false,
2026-06-21T09:37:52.1833846Z           "evidence": []
2026-06-21T09:37:52.1833933Z         },
2026-06-21T09:37:52.1834127Z         "impl": {
2026-06-21T09:37:52.1834214Z           "complete": true,
2026-06-21T09:37:52.1834303Z           "evidence": [
2026-06-21T09:37:52.1834390Z             {
2026-06-21T09:37:52.1834495Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1834586Z               "line": 18
2026-06-21T09:37:52.1834675Z             },
2026-06-21T09:37:52.1834762Z             {
2026-06-21T09:37:52.1834868Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1834957Z               "line": 35
2026-06-21T09:37:52.1835047Z             },
2026-06-21T09:37:52.1835128Z             {
2026-06-21T09:37:52.1835243Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1835423Z               "line": 72
2026-06-21T09:37:52.1835510Z             }
2026-06-21T09:37:52.1835600Z           ]
2026-06-21T09:37:52.1835681Z         },
2026-06-21T09:37:52.1835762Z         "int": {
2026-06-21T09:37:52.1835843Z           "complete": false,
2026-06-21T09:37:52.1835939Z           "evidence": []
2026-06-21T09:37:52.1836014Z         },
2026-06-21T09:37:52.1836105Z         "unit": {
2026-06-21T09:37:52.1836201Z           "complete": true,
2026-06-21T09:37:52.1836291Z           "evidence": [
2026-06-21T09:37:52.1836381Z             {
2026-06-21T09:37:52.1836492Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1836577Z               "line": 239
2026-06-21T09:37:52.1836663Z             },
2026-06-21T09:37:52.1836750Z             {
2026-06-21T09:37:52.1836868Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1836959Z               "line": 256
2026-06-21T09:37:52.1837045Z             },
2026-06-21T09:37:52.1837131Z             {
2026-06-21T09:37:52.1837249Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1837334Z               "line": 265
2026-06-21T09:37:52.1837430Z             }
2026-06-21T09:37:52.1837519Z           ]
2026-06-21T09:37:52.1837599Z         }
2026-06-21T09:37:52.1837689Z       }
2026-06-21T09:37:52.1837776Z     },
2026-06-21T09:37:52.1837857Z     {
2026-06-21T09:37:52.1837951Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T09:37:52.1838101Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T09:37:52.1838200Z       "requiredStages": [
2026-06-21T09:37:52.1838285Z         "impl",
2026-06-21T09:37:52.1838368Z         "unit"
2026-06-21T09:37:52.1838453Z       ],
2026-06-21T09:37:52.1838533Z       "stages": {
2026-06-21T09:37:52.1838619Z         "doc": {
2026-06-21T09:37:52.1838715Z           "complete": false,
2026-06-21T09:37:52.1838801Z           "evidence": []
2026-06-21T09:37:52.1838882Z         },
2026-06-21T09:37:52.1839064Z         "impl": {
2026-06-21T09:37:52.1839144Z           "complete": true,
2026-06-21T09:37:52.1839234Z           "evidence": [
2026-06-21T09:37:52.1839317Z             {
2026-06-21T09:37:52.1839444Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1839563Z               "line": 598
2026-06-21T09:37:52.1839646Z             }
2026-06-21T09:37:52.1839731Z           ]
2026-06-21T09:37:52.1839816Z         },
2026-06-21T09:37:52.1839898Z         "int": {
2026-06-21T09:37:52.1839984Z           "complete": false,
2026-06-21T09:37:52.1840079Z           "evidence": []
2026-06-21T09:37:52.1840168Z         },
2026-06-21T09:37:52.1840254Z         "unit": {
2026-06-21T09:37:52.1840335Z           "complete": true,
2026-06-21T09:37:52.1840410Z           "evidence": [
2026-06-21T09:37:52.1840489Z             {
2026-06-21T09:37:52.1840605Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1840695Z               "line": 967
2026-06-21T09:37:52.1840776Z             }
2026-06-21T09:37:52.1840857Z           ]
2026-06-21T09:37:52.1840939Z         }
2026-06-21T09:37:52.1841019Z       }
2026-06-21T09:37:52.1841105Z     },
2026-06-21T09:37:52.1841171Z     {
2026-06-21T09:37:52.1841273Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T09:37:52.1841443Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T09:37:52.1841645Z       "requiredStages": [
2026-06-21T09:37:52.1841735Z         "impl",
2026-06-21T09:37:52.1841821Z         "unit",
2026-06-21T09:37:52.1841907Z         "int"
2026-06-21T09:37:52.1841978Z       ],
2026-06-21T09:37:52.1842073Z       "stages": {
2026-06-21T09:37:52.1842145Z         "doc": {
2026-06-21T09:37:52.1842231Z           "complete": false,
2026-06-21T09:37:52.1842325Z           "evidence": []
2026-06-21T09:37:52.1842402Z         },
2026-06-21T09:37:52.1842479Z         "impl": {
2026-06-21T09:37:52.1842570Z           "complete": true,
2026-06-21T09:37:52.1842664Z           "evidence": [
2026-06-21T09:37:52.1842745Z             {
2026-06-21T09:37:52.1842981Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:37:52.1843076Z               "line": 24
2026-06-21T09:37:52.1843157Z             },
2026-06-21T09:37:52.1843234Z             {
2026-06-21T09:37:52.1843338Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:37:52.1843428Z               "line": 22
2026-06-21T09:37:52.1843516Z             }
2026-06-21T09:37:52.1843596Z           ]
2026-06-21T09:37:52.1843686Z         },
2026-06-21T09:37:52.1843767Z         "int": {
2026-06-21T09:37:52.1843868Z           "complete": true,
2026-06-21T09:37:52.1843949Z           "evidence": [
2026-06-21T09:37:52.1844043Z             {
2026-06-21T09:37:52.1844154Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:52.1844244Z               "line": 260
2026-06-21T09:37:52.1844329Z             }
2026-06-21T09:37:52.1844411Z           ]
2026-06-21T09:37:52.1844498Z         },
2026-06-21T09:37:52.1844578Z         "unit": {
2026-06-21T09:37:52.1844678Z           "complete": true,
2026-06-21T09:37:52.1844765Z           "evidence": [
2026-06-21T09:37:52.1844845Z             {
2026-06-21T09:37:52.1844959Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:37:52.1845041Z               "line": 171
2026-06-21T09:37:52.1845128Z             },
2026-06-21T09:37:52.1845216Z             {
2026-06-21T09:37:52.1845327Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:37:52.1845414Z               "line": 200
2026-06-21T09:37:52.1845489Z             },
2026-06-21T09:37:52.1845578Z             {
2026-06-21T09:37:52.1845688Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T09:37:52.1845774Z               "line": 220
2026-06-21T09:37:52.1845860Z             },
2026-06-21T09:37:52.1845945Z             {
2026-06-21T09:37:52.1850366Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:37:52.1850501Z               "line": 199
2026-06-21T09:37:52.1850601Z             },
2026-06-21T09:37:52.1850681Z             {
2026-06-21T09:37:52.1850819Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:37:52.1850918Z               "line": 219
2026-06-21T09:37:52.1851012Z             },
2026-06-21T09:37:52.1851097Z             {
2026-06-21T09:37:52.1851228Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:37:52.1851322Z               "line": 244
2026-06-21T09:37:52.1851402Z             },
2026-06-21T09:37:52.1851485Z             {
2026-06-21T09:37:52.1851589Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:37:52.1851679Z               "line": 276
2026-06-21T09:37:52.1851770Z             },
2026-06-21T09:37:52.1851857Z             {
2026-06-21T09:37:52.1851980Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:37:52.1852061Z               "line": 297
2026-06-21T09:37:52.1852152Z             },
2026-06-21T09:37:52.1852233Z             {
2026-06-21T09:37:52.1852351Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T09:37:52.1852448Z               "line": 324
2026-06-21T09:37:52.1852529Z             }
2026-06-21T09:37:52.1852599Z           ]
2026-06-21T09:37:52.1852690Z         }
2026-06-21T09:37:52.1852777Z       }
2026-06-21T09:37:52.1852858Z     },
2026-06-21T09:37:52.1852943Z     {
2026-06-21T09:37:52.1853044Z       "id": "REQ-SEAM-INJECT",
2026-06-21T09:37:52.1853371Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T09:37:52.1853462Z       "requiredStages": [
2026-06-21T09:37:52.1853541Z         "impl",
2026-06-21T09:37:52.1853636Z         "unit"
2026-06-21T09:37:52.1853708Z       ],
2026-06-21T09:37:52.1853798Z       "stages": {
2026-06-21T09:37:52.1853879Z         "doc": {
2026-06-21T09:37:52.1853974Z           "complete": false,
2026-06-21T09:37:52.1854066Z           "evidence": []
2026-06-21T09:37:52.1854151Z         },
2026-06-21T09:37:52.1854246Z         "impl": {
2026-06-21T09:37:52.1854327Z           "complete": true,
2026-06-21T09:37:52.1854428Z           "evidence": [
2026-06-21T09:37:52.1854613Z             {
2026-06-21T09:37:52.1854734Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1854828Z               "line": 19
2026-06-21T09:37:52.1854909Z             },
2026-06-21T09:37:52.1855000Z             {
2026-06-21T09:37:52.1855114Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1855204Z               "line": 111
2026-06-21T09:37:52.1855291Z             }
2026-06-21T09:37:52.1855373Z           ]
2026-06-21T09:37:52.1855461Z         },
2026-06-21T09:37:52.1855543Z         "int": {
2026-06-21T09:37:52.1855644Z           "complete": false,
2026-06-21T09:37:52.1855730Z           "evidence": []
2026-06-21T09:37:52.1855820Z         },
2026-06-21T09:37:52.1855911Z         "unit": {
2026-06-21T09:37:52.1855993Z           "complete": true,
2026-06-21T09:37:52.1856082Z           "evidence": [
2026-06-21T09:37:52.1856167Z             {
2026-06-21T09:37:52.1856276Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1856373Z               "line": 345
2026-06-21T09:37:52.1856467Z             },
2026-06-21T09:37:52.1856557Z             {
2026-06-21T09:37:52.1856668Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1856763Z               "line": 365
2026-06-21T09:37:52.1856848Z             }
2026-06-21T09:37:52.1856936Z           ]
2026-06-21T09:37:52.1857025Z         }
2026-06-21T09:37:52.1857115Z       }
2026-06-21T09:37:52.1857202Z     },
2026-06-21T09:37:52.1857284Z     {
2026-06-21T09:37:52.1857393Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T09:37:52.1857526Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T09:37:52.1857631Z       "requiredStages": [
2026-06-21T09:37:52.1857722Z         "impl",
2026-06-21T09:37:52.1857812Z         "unit"
2026-06-21T09:37:52.1857899Z       ],
2026-06-21T09:37:52.1857988Z       "stages": {
2026-06-21T09:37:52.1858079Z         "doc": {
2026-06-21T09:37:52.1858165Z           "complete": false,
2026-06-21T09:37:52.1858261Z           "evidence": []
2026-06-21T09:37:52.1858350Z         },
2026-06-21T09:37:52.1858445Z         "impl": {
2026-06-21T09:37:52.1858545Z           "complete": true,
2026-06-21T09:37:52.1858630Z           "evidence": [
2026-06-21T09:37:52.1858720Z             {
2026-06-21T09:37:52.1858838Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1859034Z               "line": 18
2026-06-21T09:37:52.1859125Z             },
2026-06-21T09:37:52.1859201Z             {
2026-06-21T09:37:52.1859320Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1859405Z               "line": 431
2026-06-21T09:37:52.1859502Z             }
2026-06-21T09:37:52.1859588Z           ]
2026-06-21T09:37:52.1859692Z         },
2026-06-21T09:37:52.1859778Z         "int": {
2026-06-21T09:37:52.1859873Z           "complete": false,
2026-06-21T09:37:52.1859959Z           "evidence": []
2026-06-21T09:37:52.1860044Z         },
2026-06-21T09:37:52.1860127Z         "unit": {
2026-06-21T09:37:52.1860216Z           "complete": true,
2026-06-21T09:37:52.1860326Z           "evidence": [
2026-06-21T09:37:52.1860398Z             {
2026-06-21T09:37:52.1860588Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1860679Z               "line": 881
2026-06-21T09:37:52.1860766Z             },
2026-06-21T09:37:52.1860846Z             {
2026-06-21T09:37:52.1861076Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1861175Z               "line": 891
2026-06-21T09:37:52.1861260Z             }
2026-06-21T09:37:52.1861345Z           ]
2026-06-21T09:37:52.1861436Z         }
2026-06-21T09:37:52.1861511Z       }
2026-06-21T09:37:52.1861591Z     },
2026-06-21T09:37:52.1861677Z     {
2026-06-21T09:37:52.1861783Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T09:37:52.1861920Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T09:37:52.1862015Z       "requiredStages": [
2026-06-21T09:37:52.1862102Z         "impl",
2026-06-21T09:37:52.1862183Z         "unit",
2026-06-21T09:37:52.1862365Z         "int"
2026-06-21T09:37:52.1862450Z       ],
2026-06-21T09:37:52.1862540Z       "stages": {
2026-06-21T09:37:52.1862621Z         "doc": {
2026-06-21T09:37:52.1862717Z           "complete": false,
2026-06-21T09:37:52.1862812Z           "evidence": []
2026-06-21T09:37:52.1862898Z         },
2026-06-21T09:37:52.1862984Z         "impl": {
2026-06-21T09:37:52.1863075Z           "complete": true,
2026-06-21T09:37:52.1863174Z           "evidence": [
2026-06-21T09:37:52.1863246Z             {
2026-06-21T09:37:52.1863371Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:37:52.1863455Z               "line": 19
2026-06-21T09:37:52.1863537Z             },
2026-06-21T09:37:52.1863624Z             {
2026-06-21T09:37:52.1863733Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T09:37:52.1863822Z               "line": 12
2026-06-21T09:37:52.1863907Z             },
2026-06-21T09:37:52.1863993Z             {
2026-06-21T09:37:52.1864111Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.1864205Z               "line": 301
2026-06-21T09:37:52.1864296Z             }
2026-06-21T09:37:52.1864378Z           ]
2026-06-21T09:37:52.1864463Z         },
2026-06-21T09:37:52.1864549Z         "int": {
2026-06-21T09:37:52.1864645Z           "complete": true,
2026-06-21T09:37:52.1864741Z           "evidence": [
2026-06-21T09:37:52.1864825Z             {
2026-06-21T09:37:52.1864945Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:52.1865030Z               "line": 259
2026-06-21T09:37:52.1865112Z             }
2026-06-21T09:37:52.1865188Z           ]
2026-06-21T09:37:52.1865274Z         },
2026-06-21T09:37:52.1865369Z         "unit": {
2026-06-21T09:37:52.1865450Z           "complete": true,
2026-06-21T09:37:52.1865541Z           "evidence": [
2026-06-21T09:37:52.1865623Z             {
2026-06-21T09:37:52.1865732Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:37:52.1865817Z               "line": 195
2026-06-21T09:37:52.1865914Z             },
2026-06-21T09:37:52.1865994Z             {
2026-06-21T09:37:52.1866262Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:37:52.1866360Z               "line": 202
2026-06-21T09:37:52.1866447Z             },
2026-06-21T09:37:52.1866538Z             {
2026-06-21T09:37:52.1866652Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T09:37:52.1866751Z               "line": 225
2026-06-21T09:37:52.1866842Z             },
2026-06-21T09:37:52.1866928Z             {
2026-06-21T09:37:52.1867046Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T09:37:52.1867132Z               "line": 106
2026-06-21T09:37:52.1867228Z             },
2026-06-21T09:37:52.1867309Z             {
2026-06-21T09:37:52.1867423Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T09:37:52.1867520Z               "line": 137
2026-06-21T09:37:52.1867600Z             },
2026-06-21T09:37:52.1867690Z             {
2026-06-21T09:37:52.1867786Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T09:37:52.1867891Z               "line": 161
2026-06-21T09:37:52.1867976Z             }
2026-06-21T09:37:52.1868067Z           ]
2026-06-21T09:37:52.1868154Z         }
2026-06-21T09:37:52.1868233Z       }
2026-06-21T09:37:52.1868319Z     },
2026-06-21T09:37:52.1868401Z     {
2026-06-21T09:37:52.1868507Z       "id": "REQ-SEAM-RESUME",
2026-06-21T09:37:52.1868759Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T09:37:52.1868854Z       "requiredStages": [
2026-06-21T09:37:52.1869038Z         "impl",
2026-06-21T09:37:52.1869120Z         "unit"
2026-06-21T09:37:52.1869204Z       ],
2026-06-21T09:37:52.1869294Z       "stages": {
2026-06-21T09:37:52.1869370Z         "doc": {
2026-06-21T09:37:52.1869471Z           "complete": false,
2026-06-21T09:37:52.1869570Z           "evidence": []
2026-06-21T09:37:52.1869660Z         },
2026-06-21T09:37:52.1869747Z         "impl": {
2026-06-21T09:37:52.1869848Z           "complete": true,
2026-06-21T09:37:52.1870043Z           "evidence": [
2026-06-21T09:37:52.1870128Z             {
2026-06-21T09:37:52.1870237Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.1870329Z               "line": 19
2026-06-21T09:37:52.1870420Z             }
2026-06-21T09:37:52.1870501Z           ]
2026-06-21T09:37:52.1870581Z         },
2026-06-21T09:37:52.1870672Z         "int": {
2026-06-21T09:37:52.1870758Z           "complete": false,
2026-06-21T09:37:52.1870843Z           "evidence": []
2026-06-21T09:37:52.1870929Z         },
2026-06-21T09:37:52.1871012Z         "unit": {
2026-06-21T09:37:52.1871096Z           "complete": true,
2026-06-21T09:37:52.1871187Z           "evidence": [
2026-06-21T09:37:52.1871263Z             {
2026-06-21T09:37:52.1871383Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.1871477Z               "line": 201
2026-06-21T09:37:52.1871554Z             },
2026-06-21T09:37:52.1871641Z             {
2026-06-21T09:37:52.1871754Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.1871858Z               "line": 223
2026-06-21T09:37:52.1871934Z             },
2026-06-21T09:37:52.1872020Z             {
2026-06-21T09:37:52.1872123Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T09:37:52.1872217Z               "line": 244
2026-06-21T09:37:52.1872304Z             }
2026-06-21T09:37:52.1872390Z           ]
2026-06-21T09:37:52.1872480Z         }
2026-06-21T09:37:52.1872561Z       }
2026-06-21T09:37:52.1872653Z     },
2026-06-21T09:37:52.1872729Z     {
2026-06-21T09:37:52.1872833Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T09:37:52.1872939Z       "title": "spawn-session seam",
2026-06-21T09:37:52.1873029Z       "requiredStages": [
2026-06-21T09:37:52.1873114Z         "impl",
2026-06-21T09:37:52.1873196Z         "unit"
2026-06-21T09:37:52.1873287Z       ],
2026-06-21T09:37:52.1873377Z       "stages": {
2026-06-21T09:37:52.1873467Z         "doc": {
2026-06-21T09:37:52.1873554Z           "complete": false,
2026-06-21T09:37:52.1873644Z           "evidence": []
2026-06-21T09:37:52.1873739Z         },
2026-06-21T09:37:52.1873825Z         "impl": {
2026-06-21T09:37:52.1873917Z           "complete": true,
2026-06-21T09:37:52.1874001Z           "evidence": [
2026-06-21T09:37:52.1874092Z             {
2026-06-21T09:37:52.1874218Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1874307Z               "line": 20
2026-06-21T09:37:52.1874396Z             }
2026-06-21T09:37:52.1874477Z           ]
2026-06-21T09:37:52.1874567Z         },
2026-06-21T09:37:52.1874647Z         "int": {
2026-06-21T09:37:52.1874746Z           "complete": false,
2026-06-21T09:37:52.1874847Z           "evidence": []
2026-06-21T09:37:52.1874924Z         },
2026-06-21T09:37:52.1875009Z         "unit": {
2026-06-21T09:37:52.1875099Z           "complete": true,
2026-06-21T09:37:52.1875181Z           "evidence": [
2026-06-21T09:37:52.1875267Z             {
2026-06-21T09:37:52.1875385Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1875482Z               "line": 608
2026-06-21T09:37:52.1875553Z             },
2026-06-21T09:37:52.1875644Z             {
2026-06-21T09:37:52.1875758Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1875854Z               "line": 615
2026-06-21T09:37:52.1875934Z             },
2026-06-21T09:37:52.1876135Z             {
2026-06-21T09:37:52.1876258Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1876344Z               "line": 721
2026-06-21T09:37:52.1876426Z             },
2026-06-21T09:37:52.1876507Z             {
2026-06-21T09:37:52.1876631Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1876717Z               "line": 727
2026-06-21T09:37:52.1876808Z             },
2026-06-21T09:37:52.1876897Z             {
2026-06-21T09:37:52.1877012Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1877103Z               "line": 752
2026-06-21T09:37:52.1877188Z             },
2026-06-21T09:37:52.1877382Z             {
2026-06-21T09:37:52.1877503Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T09:37:52.1877597Z               "line": 789
2026-06-21T09:37:52.1877687Z             }
2026-06-21T09:37:52.1877765Z           ]
2026-06-21T09:37:52.1877851Z         }
2026-06-21T09:37:52.1877930Z       }
2026-06-21T09:37:52.1878017Z     },
2026-06-21T09:37:52.1878099Z     {
2026-06-21T09:37:52.1878194Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T09:37:52.1878356Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T09:37:52.1878451Z       "requiredStages": [
2026-06-21T09:37:52.1878551Z         "impl",
2026-06-21T09:37:52.1878651Z         "unit"
2026-06-21T09:37:52.1878738Z       ],
2026-06-21T09:37:52.1878822Z       "stages": {
2026-06-21T09:37:52.1878913Z         "doc": {
2026-06-21T09:37:52.1879090Z           "complete": false,
2026-06-21T09:37:52.1879190Z           "evidence": []
2026-06-21T09:37:52.1879271Z         },
2026-06-21T09:37:52.1879353Z         "impl": {
2026-06-21T09:37:52.1879461Z           "complete": true,
2026-06-21T09:37:52.1879565Z           "evidence": [
2026-06-21T09:37:52.1879646Z             {
2026-06-21T09:37:52.1879783Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.1879859Z               "line": 28
2026-06-21T09:37:52.1879950Z             },
2026-06-21T09:37:52.1880026Z             {
2026-06-21T09:37:52.1880159Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.1880245Z               "line": 88
2026-06-21T09:37:52.1880322Z             }
2026-06-21T09:37:52.1880408Z           ]
2026-06-21T09:37:52.1880492Z         },
2026-06-21T09:37:52.1880574Z         "int": {
2026-06-21T09:37:52.1880656Z           "complete": false,
2026-06-21T09:37:52.1880746Z           "evidence": []
2026-06-21T09:37:52.1880817Z         },
2026-06-21T09:37:52.1880899Z         "unit": {
2026-06-21T09:37:52.1880999Z           "complete": true,
2026-06-21T09:37:52.1881084Z           "evidence": [
2026-06-21T09:37:52.1881175Z             {
2026-06-21T09:37:52.1881300Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.1881380Z               "line": 326
2026-06-21T09:37:52.1881465Z             },
2026-06-21T09:37:52.1881543Z             {
2026-06-21T09:37:52.1881670Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.1881761Z               "line": 337
2026-06-21T09:37:52.1881843Z             }
2026-06-21T09:37:52.1881929Z           ]
2026-06-21T09:37:52.1882018Z         }
2026-06-21T09:37:52.1882105Z       }
2026-06-21T09:37:52.1882182Z     },
2026-06-21T09:37:52.1882268Z     {
2026-06-21T09:37:52.1882347Z       "id": "REQ-SEC-1",
2026-06-21T09:37:52.1882730Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T09:37:52.1882821Z       "requiredStages": [
2026-06-21T09:37:52.1882908Z         "impl",
2026-06-21T09:37:52.1883002Z         "unit"
2026-06-21T09:37:52.1883083Z       ],
2026-06-21T09:37:52.1883170Z       "stages": {
2026-06-21T09:37:52.1883255Z         "doc": {
2026-06-21T09:37:52.1883355Z           "complete": false,
2026-06-21T09:37:52.1883441Z           "evidence": []
2026-06-21T09:37:52.1883528Z         },
2026-06-21T09:37:52.1883618Z         "impl": {
2026-06-21T09:37:52.1883819Z           "complete": true,
2026-06-21T09:37:52.1883908Z           "evidence": [
2026-06-21T09:37:52.1883989Z             {
2026-06-21T09:37:52.1884114Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:37:52.1884195Z               "line": 86
2026-06-21T09:37:52.1884280Z             },
2026-06-21T09:37:52.1884366Z             {
2026-06-21T09:37:52.1884477Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:37:52.1884566Z               "line": 116
2026-06-21T09:37:52.1884648Z             },
2026-06-21T09:37:52.1884734Z             {
2026-06-21T09:37:52.1884839Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:37:52.1885027Z               "line": 130
2026-06-21T09:37:52.1885114Z             },
2026-06-21T09:37:52.1885193Z             {
2026-06-21T09:37:52.1885311Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1885397Z               "line": 109
2026-06-21T09:37:52.1885484Z             },
2026-06-21T09:37:52.1885574Z             {
2026-06-21T09:37:52.1885679Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1885770Z               "line": 130
2026-06-21T09:37:52.1885856Z             },
2026-06-21T09:37:52.1885945Z             {
2026-06-21T09:37:52.1886052Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1886137Z               "line": 143
2026-06-21T09:37:52.1886222Z             },
2026-06-21T09:37:52.1886308Z             {
2026-06-21T09:37:52.1886414Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1886499Z               "line": 209
2026-06-21T09:37:52.1886585Z             },
2026-06-21T09:37:52.1886671Z             {
2026-06-21T09:37:52.1886795Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1886880Z               "line": 235
2026-06-21T09:37:52.1886971Z             },
2026-06-21T09:37:52.1887053Z             {
2026-06-21T09:37:52.1887161Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1887262Z               "line": 5295
2026-06-21T09:37:52.1887344Z             }
2026-06-21T09:37:52.1887429Z           ]
2026-06-21T09:37:52.1887515Z         },
2026-06-21T09:37:52.1887601Z         "int": {
2026-06-21T09:37:52.1887697Z           "complete": false,
2026-06-21T09:37:52.1887781Z           "evidence": []
2026-06-21T09:37:52.1887871Z         },
2026-06-21T09:37:52.1887962Z         "unit": {
2026-06-21T09:37:52.1888053Z           "complete": true,
2026-06-21T09:37:52.1888134Z           "evidence": [
2026-06-21T09:37:52.1888214Z             {
2026-06-21T09:37:52.1888339Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:37:52.1888430Z               "line": 142
2026-06-21T09:37:52.1888509Z             },
2026-06-21T09:37:52.1888592Z             {
2026-06-21T09:37:52.1888706Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:37:52.1888787Z               "line": 194
2026-06-21T09:37:52.1888877Z             },
2026-06-21T09:37:52.1889049Z             {
2026-06-21T09:37:52.1889158Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T09:37:52.1889250Z               "line": 235
2026-06-21T09:37:52.1889331Z             },
2026-06-21T09:37:52.1889417Z             {
2026-06-21T09:37:52.1889536Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T09:37:52.1889627Z               "line": 140
2026-06-21T09:37:52.1889706Z             },
2026-06-21T09:37:52.1889787Z             {
2026-06-21T09:37:52.1889899Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1889980Z               "line": 247
2026-06-21T09:37:52.1890063Z             },
2026-06-21T09:37:52.1890153Z             {
2026-06-21T09:37:52.1890264Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1890357Z               "line": 277
2026-06-21T09:37:52.1890438Z             },
2026-06-21T09:37:52.1890519Z             {
2026-06-21T09:37:52.1890625Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1890834Z               "line": 310
2026-06-21T09:37:52.1890915Z             },
2026-06-21T09:37:52.1891001Z             {
2026-06-21T09:37:52.1891114Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1891202Z               "line": 329
2026-06-21T09:37:52.1891297Z             },
2026-06-21T09:37:52.1891372Z             {
2026-06-21T09:37:52.1891488Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1891582Z               "line": 362
2026-06-21T09:37:52.1891663Z             },
2026-06-21T09:37:52.1891744Z             {
2026-06-21T09:37:52.1891850Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T09:37:52.1892040Z               "line": 386
2026-06-21T09:37:52.1892117Z             },
2026-06-21T09:37:52.1892203Z             {
2026-06-21T09:37:52.1892312Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1892398Z               "line": 8296
2026-06-21T09:37:52.1892485Z             }
2026-06-21T09:37:52.1892569Z           ]
2026-06-21T09:37:52.1892655Z         }
2026-06-21T09:37:52.1892737Z       }
2026-06-21T09:37:52.1892824Z     },
2026-06-21T09:37:52.1892907Z     {
2026-06-21T09:37:52.1892997Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T09:37:52.1896820Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T09:37:52.1896955Z       "requiredStages": [
2026-06-21T09:37:52.1897030Z         "impl",
2026-06-21T09:37:52.1897116Z         "unit",
2026-06-21T09:37:52.1897197Z         "int"
2026-06-21T09:37:52.1897289Z       ],
2026-06-21T09:37:52.1897379Z       "stages": {
2026-06-21T09:37:52.1897455Z         "doc": {
2026-06-21T09:37:52.1897551Z           "complete": false,
2026-06-21T09:37:52.1897632Z           "evidence": []
2026-06-21T09:37:52.1897726Z         },
2026-06-21T09:37:52.1897817Z         "impl": {
2026-06-21T09:37:52.1897914Z           "complete": true,
2026-06-21T09:37:52.1897998Z           "evidence": [
2026-06-21T09:37:52.1898065Z             {
2026-06-21T09:37:52.1898190Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.1898280Z               "line": 1066
2026-06-21T09:37:52.1898360Z             },
2026-06-21T09:37:52.1898445Z             {
2026-06-21T09:37:52.1898565Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.1898651Z               "line": 1897
2026-06-21T09:37:52.1898731Z             },
2026-06-21T09:37:52.1898817Z             {
2026-06-21T09:37:52.1898923Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1899123Z               "line": 2850
2026-06-21T09:37:52.1899195Z             }
2026-06-21T09:37:52.1899280Z           ]
2026-06-21T09:37:52.1899361Z         },
2026-06-21T09:37:52.1899447Z         "int": {
2026-06-21T09:37:52.1899533Z           "complete": true,
2026-06-21T09:37:52.1899618Z           "evidence": [
2026-06-21T09:37:52.1899811Z             {
2026-06-21T09:37:52.1899938Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.1900019Z               "line": 189
2026-06-21T09:37:52.1900101Z             },
2026-06-21T09:37:52.1900173Z             {
2026-06-21T09:37:52.1900290Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T09:37:52.1900377Z               "line": 524
2026-06-21T09:37:52.1900464Z             }
2026-06-21T09:37:52.1900548Z           ]
2026-06-21T09:37:52.1900628Z         },
2026-06-21T09:37:52.1900718Z         "unit": {
2026-06-21T09:37:52.1900805Z           "complete": true,
2026-06-21T09:37:52.1900899Z           "evidence": [
2026-06-21T09:37:52.1901084Z             {
2026-06-21T09:37:52.1901200Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T09:37:52.1901284Z               "line": 952
2026-06-21T09:37:52.1901370Z             },
2026-06-21T09:37:52.1901452Z             {
2026-06-21T09:37:52.1901551Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1901641Z               "line": 7486
2026-06-21T09:37:52.1901724Z             }
2026-06-21T09:37:52.1901814Z           ]
2026-06-21T09:37:52.1901904Z         }
2026-06-21T09:37:52.1901970Z       }
2026-06-21T09:37:52.1902057Z     },
2026-06-21T09:37:52.1902133Z     {
2026-06-21T09:37:52.1902252Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T09:37:52.1909216Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T09:37:52.1909368Z       "requiredStages": [
2026-06-21T09:37:52.1909450Z         "doc",
2026-06-21T09:37:52.1909540Z         "impl",
2026-06-21T09:37:52.1909621Z         "unit",
2026-06-21T09:37:52.1909712Z         "int"
2026-06-21T09:37:52.1909802Z       ],
2026-06-21T09:37:52.1909883Z       "stages": {
2026-06-21T09:37:52.1909968Z         "doc": {
2026-06-21T09:37:52.1910046Z           "complete": true,
2026-06-21T09:37:52.1910274Z           "evidence": [
2026-06-21T09:37:52.1910356Z             {
2026-06-21T09:37:52.1910508Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T09:37:52.1910607Z               "line": 130
2026-06-21T09:37:52.1910690Z             },
2026-06-21T09:37:52.1910775Z             {
2026-06-21T09:37:52.1910870Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.1910966Z               "line": 96
2026-06-21T09:37:52.1911038Z             }
2026-06-21T09:37:52.1911122Z           ]
2026-06-21T09:37:52.1911212Z         },
2026-06-21T09:37:52.1911293Z         "impl": {
2026-06-21T09:37:52.1911389Z           "complete": true,
2026-06-21T09:37:52.1911567Z           "evidence": [
2026-06-21T09:37:52.1911659Z             {
2026-06-21T09:37:52.1911787Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.1911872Z               "line": 77
2026-06-21T09:37:52.1911959Z             },
2026-06-21T09:37:52.1912036Z             {
2026-06-21T09:37:52.1912164Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.1912249Z               "line": 183
2026-06-21T09:37:52.1912331Z             },
2026-06-21T09:37:52.1912412Z             {
2026-06-21T09:37:52.1912530Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1912618Z               "line": 222
2026-06-21T09:37:52.1912698Z             },
2026-06-21T09:37:52.1912779Z             {
2026-06-21T09:37:52.1912898Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.1912985Z               "line": 71
2026-06-21T09:37:52.1913065Z             },
2026-06-21T09:37:52.1913150Z             {
2026-06-21T09:37:52.1913266Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1913351Z               "line": 176
2026-06-21T09:37:52.1913437Z             }
2026-06-21T09:37:52.1913509Z           ]
2026-06-21T09:37:52.1913586Z         },
2026-06-21T09:37:52.1913661Z         "int": {
2026-06-21T09:37:52.1913757Z           "complete": true,
2026-06-21T09:37:52.1913848Z           "evidence": [
2026-06-21T09:37:52.1913929Z             {
2026-06-21T09:37:52.1914060Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T09:37:52.1914151Z               "line": 25
2026-06-21T09:37:52.1914227Z             }
2026-06-21T09:37:52.1914307Z           ]
2026-06-21T09:37:52.1914396Z         },
2026-06-21T09:37:52.1914482Z         "unit": {
2026-06-21T09:37:52.1914569Z           "complete": true,
2026-06-21T09:37:52.1914660Z           "evidence": [
2026-06-21T09:37:52.1914730Z             {
2026-06-21T09:37:52.1914855Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.1914940Z               "line": 341
2026-06-21T09:37:52.1915026Z             },
2026-06-21T09:37:52.1915112Z             {
2026-06-21T09:37:52.1915223Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T09:37:52.1915318Z               "line": 391
2026-06-21T09:37:52.1915397Z             },
2026-06-21T09:37:52.1915480Z             {
2026-06-21T09:37:52.1915593Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1915679Z               "line": 1244
2026-06-21T09:37:52.1915765Z             },
2026-06-21T09:37:52.1915847Z             {
2026-06-21T09:37:52.1915965Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.1916051Z               "line": 184
2026-06-21T09:37:52.1916128Z             },
2026-06-21T09:37:52.1916214Z             {
2026-06-21T09:37:52.1916328Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.1916430Z               "line": 208
2026-06-21T09:37:52.1916510Z             },
2026-06-21T09:37:52.1916604Z             {
2026-06-21T09:37:52.1916712Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.1916808Z               "line": 236
2026-06-21T09:37:52.1916893Z             },
2026-06-21T09:37:52.1916973Z             {
2026-06-21T09:37:52.1917097Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T09:37:52.1917259Z               "line": 945
2026-06-21T09:37:52.1917349Z             }
2026-06-21T09:37:52.1917422Z           ]
2026-06-21T09:37:52.1917512Z         }
2026-06-21T09:37:52.1917597Z       }
2026-06-21T09:37:52.1917673Z     },
2026-06-21T09:37:52.1917761Z     {
2026-06-21T09:37:52.1917846Z       "id": "REQ-SHELL-1",
2026-06-21T09:37:52.1918700Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T09:37:52.1918857Z       "requiredStages": [
2026-06-21T09:37:52.1918933Z         "impl",
2026-06-21T09:37:52.1919104Z         "unit",
2026-06-21T09:37:52.1919190Z         "int"
2026-06-21T09:37:52.1919267Z       ],
2026-06-21T09:37:52.1919349Z       "stages": {
2026-06-21T09:37:52.1919466Z         "doc": {
2026-06-21T09:37:52.1919561Z           "complete": false,
2026-06-21T09:37:52.1919652Z           "evidence": []
2026-06-21T09:37:52.1919734Z         },
2026-06-21T09:37:52.1919819Z         "impl": {
2026-06-21T09:37:52.1919904Z           "complete": true,
2026-06-21T09:37:52.1919986Z           "evidence": [
2026-06-21T09:37:52.1920067Z             {
2026-06-21T09:37:52.1920190Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1920272Z               "line": 189
2026-06-21T09:37:52.1920362Z             },
2026-06-21T09:37:52.1920429Z             {
2026-06-21T09:37:52.1920548Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1920644Z               "line": 268
2026-06-21T09:37:52.1920734Z             },
2026-06-21T09:37:52.1920815Z             {
2026-06-21T09:37:52.1920935Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1921016Z               "line": 27
2026-06-21T09:37:52.1921101Z             },
2026-06-21T09:37:52.1921197Z             {
2026-06-21T09:37:52.1921302Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1921382Z               "line": 52
2026-06-21T09:37:52.1921468Z             },
2026-06-21T09:37:52.1921541Z             {
2026-06-21T09:37:52.1921660Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1921740Z               "line": 144
2026-06-21T09:37:52.1921825Z             },
2026-06-21T09:37:52.1921911Z             {
2026-06-21T09:37:52.1922028Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1922122Z               "line": 176
2026-06-21T09:37:52.1922195Z             },
2026-06-21T09:37:52.1922281Z             {
2026-06-21T09:37:52.1922386Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1922476Z               "line": 22
2026-06-21T09:37:52.1922557Z             },
2026-06-21T09:37:52.1922643Z             {
2026-06-21T09:37:52.1922766Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1922854Z               "line": 65
2026-06-21T09:37:52.1922939Z             },
2026-06-21T09:37:52.1923019Z             {
2026-06-21T09:37:52.1923134Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1923216Z               "line": 76
2026-06-21T09:37:52.1923301Z             },
2026-06-21T09:37:52.1923386Z             {
2026-06-21T09:37:52.1923502Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1923592Z               "line": 151
2026-06-21T09:37:52.1923663Z             },
2026-06-21T09:37:52.1923749Z             {
2026-06-21T09:37:52.1923864Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1923959Z               "line": 210
2026-06-21T09:37:52.1924049Z             },
2026-06-21T09:37:52.1924132Z             {
2026-06-21T09:37:52.1928287Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1928396Z               "line": 259
2026-06-21T09:37:52.1928635Z             },
2026-06-21T09:37:52.1928725Z             {
2026-06-21T09:37:52.1928854Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1929035Z               "line": 281
2026-06-21T09:37:52.1929116Z             },
2026-06-21T09:37:52.1929197Z             {
2026-06-21T09:37:52.1929322Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1929402Z               "line": 294
2026-06-21T09:37:52.1929483Z             },
2026-06-21T09:37:52.1929570Z             {
2026-06-21T09:37:52.1929688Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.1929779Z               "line": 217
2026-06-21T09:37:52.1929966Z             },
2026-06-21T09:37:52.1930040Z             {
2026-06-21T09:37:52.1930159Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.1930246Z               "line": 233
2026-06-21T09:37:52.1930323Z             },
2026-06-21T09:37:52.1930407Z             {
2026-06-21T09:37:52.1930522Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.1930608Z               "line": 41
2026-06-21T09:37:52.1930689Z             },
2026-06-21T09:37:52.1930774Z             {
2026-06-21T09:37:52.1930885Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.1930966Z               "line": 222
2026-06-21T09:37:52.1931046Z             },
2026-06-21T09:37:52.1931123Z             {
2026-06-21T09:37:52.1931242Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T09:37:52.1931328Z               "line": 173
2026-06-21T09:37:52.1931413Z             },
2026-06-21T09:37:52.1931495Z             {
2026-06-21T09:37:52.1931604Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.1931699Z               "line": 354
2026-06-21T09:37:52.1931767Z             },
2026-06-21T09:37:52.1931853Z             {
2026-06-21T09:37:52.1931952Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.1932043Z               "line": 419
2026-06-21T09:37:52.1932135Z             },
2026-06-21T09:37:52.1932215Z             {
2026-06-21T09:37:52.1932333Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1932418Z               "line": 333
2026-06-21T09:37:52.1932504Z             },
2026-06-21T09:37:52.1932583Z             {
2026-06-21T09:37:52.1932678Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1932769Z               "line": 6320
2026-06-21T09:37:52.1932841Z             },
2026-06-21T09:37:52.1932931Z             {
2026-06-21T09:37:52.1933031Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1933113Z               "line": 6470
2026-06-21T09:37:52.1933189Z             },
2026-06-21T09:37:52.1933279Z             {
2026-06-21T09:37:52.1933384Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1933466Z               "line": 6646
2026-06-21T09:37:52.1933551Z             }
2026-06-21T09:37:52.1933632Z           ]
2026-06-21T09:37:52.1933714Z         },
2026-06-21T09:37:52.1933785Z         "int": {
2026-06-21T09:37:52.1933889Z           "complete": true,
2026-06-21T09:37:52.1933975Z           "evidence": [
2026-06-21T09:37:52.1934062Z             {
2026-06-21T09:37:52.1934190Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1934280Z               "line": 713
2026-06-21T09:37:52.1934368Z             },
2026-06-21T09:37:52.1934448Z             {
2026-06-21T09:37:52.1934576Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T09:37:52.1934668Z               "line": 8
2026-06-21T09:37:52.1934753Z             },
2026-06-21T09:37:52.1934843Z             {
2026-06-21T09:37:52.1934954Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T09:37:52.1935040Z               "line": 49
2026-06-21T09:37:52.1935110Z             },
2026-06-21T09:37:52.1935200Z             {
2026-06-21T09:37:52.1935324Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1935404Z               "line": 778
2026-06-21T09:37:52.1935603Z             },
2026-06-21T09:37:52.1935684Z             {
2026-06-21T09:37:52.1935803Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1935898Z               "line": 1213
2026-06-21T09:37:52.1935976Z             },
2026-06-21T09:37:52.1936066Z             {
2026-06-21T09:37:52.1936184Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T09:37:52.1936281Z               "line": 17
2026-06-21T09:37:52.1936361Z             },
2026-06-21T09:37:52.1936447Z             {
2026-06-21T09:37:52.1936566Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T09:37:52.1936657Z               "line": 14
2026-06-21T09:37:52.1936828Z             }
2026-06-21T09:37:52.1936910Z           ]
2026-06-21T09:37:52.1937001Z         },
2026-06-21T09:37:52.1937085Z         "unit": {
2026-06-21T09:37:52.1937181Z           "complete": true,
2026-06-21T09:37:52.1937277Z           "evidence": [
2026-06-21T09:37:52.1937358Z             {
2026-06-21T09:37:52.1937481Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1937578Z               "line": 246
2026-06-21T09:37:52.1937663Z             },
2026-06-21T09:37:52.1937743Z             {
2026-06-21T09:37:52.1937867Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1937966Z               "line": 279
2026-06-21T09:37:52.1938051Z             },
2026-06-21T09:37:52.1938131Z             {
2026-06-21T09:37:52.1938241Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1938328Z               "line": 319
2026-06-21T09:37:52.1938407Z             },
2026-06-21T09:37:52.1938493Z             {
2026-06-21T09:37:52.1938618Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1938699Z               "line": 599
2026-06-21T09:37:52.1938785Z             },
2026-06-21T09:37:52.1938862Z             {
2026-06-21T09:37:52.1939118Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1939205Z               "line": 672
2026-06-21T09:37:52.1939299Z             },
2026-06-21T09:37:52.1939380Z             {
2026-06-21T09:37:52.1939491Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1939577Z               "line": 816
2026-06-21T09:37:52.1939658Z             },
2026-06-21T09:37:52.1939734Z             {
2026-06-21T09:37:52.1939844Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.1939943Z               "line": 595
2026-06-21T09:37:52.1940029Z             },
2026-06-21T09:37:52.1940112Z             {
2026-06-21T09:37:52.1940234Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T09:37:52.1940320Z               "line": 399
2026-06-21T09:37:52.1940407Z             },
2026-06-21T09:37:52.1940488Z             {
2026-06-21T09:37:52.1940591Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1940681Z               "line": 8976
2026-06-21T09:37:52.1940753Z             },
2026-06-21T09:37:52.1940839Z             {
2026-06-21T09:37:52.1940948Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1941034Z               "line": 9300
2026-06-21T09:37:52.1941116Z             },
2026-06-21T09:37:52.1941187Z             {
2026-06-21T09:37:52.1941286Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1941368Z               "line": 9717
2026-06-21T09:37:52.1941455Z             }
2026-06-21T09:37:52.1941536Z           ]
2026-06-21T09:37:52.1941625Z         }
2026-06-21T09:37:52.1941707Z       }
2026-06-21T09:37:52.1941788Z     },
2026-06-21T09:37:52.1941869Z     {
2026-06-21T09:37:52.1941964Z       "id": "REQ-SHELL-2",
2026-06-21T09:37:52.1943501Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T09:37:52.1943754Z       "requiredStages": [
2026-06-21T09:37:52.1943834Z         "impl",
2026-06-21T09:37:52.1943915Z         "unit",
2026-06-21T09:37:52.1943993Z         "int"
2026-06-21T09:37:52.1944078Z       ],
2026-06-21T09:37:52.1944158Z       "stages": {
2026-06-21T09:37:52.1944250Z         "doc": {
2026-06-21T09:37:52.1944355Z           "complete": false,
2026-06-21T09:37:52.1944436Z           "evidence": []
2026-06-21T09:37:52.1944516Z         },
2026-06-21T09:37:52.1944589Z         "impl": {
2026-06-21T09:37:52.1944688Z           "complete": true,
2026-06-21T09:37:52.1944874Z           "evidence": [
2026-06-21T09:37:52.1944966Z             {
2026-06-21T09:37:52.1945089Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.1945179Z               "line": 217
2026-06-21T09:37:52.1945267Z             },
2026-06-21T09:37:52.1945346Z             {
2026-06-21T09:37:52.1945485Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.1945572Z               "line": 403
2026-06-21T09:37:52.1945666Z             },
2026-06-21T09:37:52.1945756Z             {
2026-06-21T09:37:52.1945874Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T09:37:52.1945969Z               "line": 250
2026-06-21T09:37:52.1946053Z             },
2026-06-21T09:37:52.1946134Z             {
2026-06-21T09:37:52.1946254Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.1946340Z               "line": 403
2026-06-21T09:37:52.1946425Z             },
2026-06-21T09:37:52.1946511Z             {
2026-06-21T09:37:52.1946640Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1946735Z               "line": 30
2026-06-21T09:37:52.1946826Z             },
2026-06-21T09:37:52.1946903Z             {
2026-06-21T09:37:52.1947030Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1947122Z               "line": 409
2026-06-21T09:37:52.1947212Z             },
2026-06-21T09:37:52.1947303Z             {
2026-06-21T09:37:52.1947412Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1947509Z               "line": 445
2026-06-21T09:37:52.1947589Z             },
2026-06-21T09:37:52.1947665Z             {
2026-06-21T09:37:52.1947780Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1947866Z               "line": 660
2026-06-21T09:37:52.1947941Z             },
2026-06-21T09:37:52.1948023Z             {
2026-06-21T09:37:52.1948143Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1948233Z               "line": 348
2026-06-21T09:37:52.1948303Z             },
2026-06-21T09:37:52.1948388Z             {
2026-06-21T09:37:52.1948498Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1948592Z               "line": 115
2026-06-21T09:37:52.1948662Z             },
2026-06-21T09:37:52.1948739Z             {
2026-06-21T09:37:52.1948854Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1949068Z               "line": 120
2026-06-21T09:37:52.1949160Z             },
2026-06-21T09:37:52.1949245Z             {
2026-06-21T09:37:52.1949349Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1949431Z               "line": 374
2026-06-21T09:37:52.1949521Z             },
2026-06-21T09:37:52.1949602Z             {
2026-06-21T09:37:52.1949708Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1949798Z               "line": 500
2026-06-21T09:37:52.1949879Z             },
2026-06-21T09:37:52.1949959Z             {
2026-06-21T09:37:52.1950075Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1950160Z               "line": 24
2026-06-21T09:37:52.1950251Z             },
2026-06-21T09:37:52.1950327Z             {
2026-06-21T09:37:52.1950442Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1950638Z               "line": 76
2026-06-21T09:37:52.1950719Z             },
2026-06-21T09:37:52.1950799Z             {
2026-06-21T09:37:52.1950923Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1951011Z               "line": 154
2026-06-21T09:37:52.1951091Z             },
2026-06-21T09:37:52.1951175Z             {
2026-06-21T09:37:52.1951289Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1951381Z               "line": 177
2026-06-21T09:37:52.1951462Z             },
2026-06-21T09:37:52.1951546Z             {
2026-06-21T09:37:52.1951666Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1951856Z               "line": 273
2026-06-21T09:37:52.1951948Z             },
2026-06-21T09:37:52.1952025Z             {
2026-06-21T09:37:52.1952143Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1952219Z               "line": 456
2026-06-21T09:37:52.1952310Z             },
2026-06-21T09:37:52.1952409Z             {
2026-06-21T09:37:52.1952519Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1952611Z               "line": 538
2026-06-21T09:37:52.1952678Z             },
2026-06-21T09:37:52.1952763Z             {
2026-06-21T09:37:52.1952882Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T09:37:52.1952964Z               "line": 27
2026-06-21T09:37:52.1953049Z             },
2026-06-21T09:37:52.1953130Z             {
2026-06-21T09:37:52.1953255Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T09:37:52.1953336Z               "line": 48
2026-06-21T09:37:52.1953420Z             },
2026-06-21T09:37:52.1953514Z             {
2026-06-21T09:37:52.1953630Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1953713Z               "line": 517
2026-06-21T09:37:52.1953799Z             },
2026-06-21T09:37:52.1953880Z             {
2026-06-21T09:37:52.1953981Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1954084Z               "line": 1921
2026-06-21T09:37:52.1954166Z             },
2026-06-21T09:37:52.1954248Z             {
2026-06-21T09:37:52.1954352Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1954437Z               "line": 6334
2026-06-21T09:37:52.1954514Z             },
2026-06-21T09:37:52.1954596Z             {
2026-06-21T09:37:52.1954704Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1954785Z               "line": 6395
2026-06-21T09:37:52.1954868Z             },
2026-06-21T09:37:52.1954948Z             {
2026-06-21T09:37:52.1955043Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1955134Z               "line": 6423
2026-06-21T09:37:52.1955216Z             },
2026-06-21T09:37:52.1955296Z             {
2026-06-21T09:37:52.1955391Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1955478Z               "line": 6477
2026-06-21T09:37:52.1955564Z             },
2026-06-21T09:37:52.1955644Z             {
2026-06-21T09:37:52.1955754Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1955836Z               "line": 6732
2026-06-21T09:37:52.1955920Z             },
2026-06-21T09:37:52.1956006Z             {
2026-06-21T09:37:52.1956094Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1956175Z               "line": 6792
2026-06-21T09:37:52.1956254Z             },
2026-06-21T09:37:52.1956339Z             {
2026-06-21T09:37:52.1956439Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1956543Z               "line": 298
2026-06-21T09:37:52.1956633Z             },
2026-06-21T09:37:52.1956713Z             {
2026-06-21T09:37:52.1956824Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.1956914Z               "line": 339
2026-06-21T09:37:52.1956999Z             }
2026-06-21T09:37:52.1957076Z           ]
2026-06-21T09:37:52.1957167Z         },
2026-06-21T09:37:52.1957252Z         "int": {
2026-06-21T09:37:52.1957342Z           "complete": true,
2026-06-21T09:37:52.1957525Z           "evidence": [
2026-06-21T09:37:52.1957600Z             {
2026-06-21T09:37:52.1957720Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.1957810Z               "line": 706
2026-06-21T09:37:52.1957891Z             },
2026-06-21T09:37:52.1957977Z             {
2026-06-21T09:37:52.1958083Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1958173Z               "line": 778
2026-06-21T09:37:52.1958249Z             },
2026-06-21T09:37:52.1958326Z             {
2026-06-21T09:37:52.1958440Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1958530Z               "line": 1213
2026-06-21T09:37:52.1958699Z             },
2026-06-21T09:37:52.1958774Z             {
2026-06-21T09:37:52.1958910Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T09:37:52.1959072Z               "line": 18
2026-06-21T09:37:52.1959152Z             }
2026-06-21T09:37:52.1959227Z           ]
2026-06-21T09:37:52.1959318Z         },
2026-06-21T09:37:52.1959400Z         "unit": {
2026-06-21T09:37:52.1959500Z           "complete": true,
2026-06-21T09:37:52.1959595Z           "evidence": [
2026-06-21T09:37:52.1959672Z             {
2026-06-21T09:37:52.1959791Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1959871Z               "line": 744
2026-06-21T09:37:52.1959958Z             },
2026-06-21T09:37:52.1960044Z             {
2026-06-21T09:37:52.1960162Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T09:37:52.1960249Z               "line": 796
2026-06-21T09:37:52.1960325Z             },
2026-06-21T09:37:52.1960415Z             {
2026-06-21T09:37:52.1960524Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1960607Z               "line": 705
2026-06-21T09:37:52.1960692Z             },
2026-06-21T09:37:52.1960773Z             {
2026-06-21T09:37:52.1960897Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1960993Z               "line": 754
2026-06-21T09:37:52.1961082Z             },
2026-06-21T09:37:52.1961168Z             {
2026-06-21T09:37:52.1961275Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1961359Z               "line": 778
2026-06-21T09:37:52.1961441Z             },
2026-06-21T09:37:52.1961527Z             {
2026-06-21T09:37:52.1961641Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1961735Z               "line": 603
2026-06-21T09:37:52.1961820Z             },
2026-06-21T09:37:52.1961898Z             {
2026-06-21T09:37:52.1962012Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1962092Z               "line": 624
2026-06-21T09:37:52.1962178Z             },
2026-06-21T09:37:52.1962265Z             {
2026-06-21T09:37:52.1962383Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1962479Z               "line": 660
2026-06-21T09:37:52.1962561Z             },
2026-06-21T09:37:52.1962651Z             {
2026-06-21T09:37:52.1962764Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1962856Z               "line": 714
2026-06-21T09:37:52.1962937Z             },
2026-06-21T09:37:52.1963027Z             {
2026-06-21T09:37:52.1963142Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1963223Z               "line": 732
2026-06-21T09:37:52.1963308Z             },
2026-06-21T09:37:52.1963394Z             {
2026-06-21T09:37:52.1963505Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1963586Z               "line": 766
2026-06-21T09:37:52.1963681Z             },
2026-06-21T09:37:52.1963766Z             {
2026-06-21T09:37:52.1963886Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T09:37:52.1963966Z               "line": 841
2026-06-21T09:37:52.1964047Z             },
2026-06-21T09:37:52.1964132Z             {
2026-06-21T09:37:52.1964250Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T09:37:52.1964459Z               "line": 85
2026-06-21T09:37:52.1964546Z             },
2026-06-21T09:37:52.1964630Z             {
2026-06-21T09:37:52.1964735Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1964818Z               "line": 8044
2026-06-21T09:37:52.1964898Z             },
2026-06-21T09:37:52.1964983Z             {
2026-06-21T09:37:52.1965080Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1965165Z               "line": 9054
2026-06-21T09:37:52.1965246Z             },
2026-06-21T09:37:52.1965336Z             {
2026-06-21T09:37:52.1965433Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1965646Z               "line": 9124
2026-06-21T09:37:52.1965733Z             },
2026-06-21T09:37:52.1965809Z             {
2026-06-21T09:37:52.1965913Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1965994Z               "line": 9162
2026-06-21T09:37:52.1966086Z             }
2026-06-21T09:37:52.1966309Z           ]
2026-06-21T09:37:52.1966392Z         }
2026-06-21T09:37:52.1966481Z       }
2026-06-21T09:37:52.1966562Z     },
2026-06-21T09:37:52.1966644Z     {
2026-06-21T09:37:52.1966730Z       "id": "REQ-SHELL-3",
2026-06-21T09:37:52.1968566Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T09:37:52.1968681Z       "requiredStages": [
2026-06-21T09:37:52.1968771Z         "impl",
2026-06-21T09:37:52.1968861Z         "unit",
2026-06-21T09:37:52.1969038Z         "int"
2026-06-21T09:37:52.1969119Z       ],
2026-06-21T09:37:52.1969196Z       "stages": {
2026-06-21T09:37:52.1969288Z         "doc": {
2026-06-21T09:37:52.1969381Z           "complete": false,
2026-06-21T09:37:52.1969466Z           "evidence": []
2026-06-21T09:37:52.1969566Z         },
2026-06-21T09:37:52.1969647Z         "impl": {
2026-06-21T09:37:52.1969745Z           "complete": true,
2026-06-21T09:37:52.1969830Z           "evidence": [
2026-06-21T09:37:52.1969898Z             {
2026-06-21T09:37:52.1970022Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.1970107Z               "line": 229
2026-06-21T09:37:52.1970203Z             },
2026-06-21T09:37:52.1970275Z             {
2026-06-21T09:37:52.1970408Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1970494Z               "line": 36
2026-06-21T09:37:52.1970575Z             },
2026-06-21T09:37:52.1970656Z             {
2026-06-21T09:37:52.1970765Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1970862Z               "line": 137
2026-06-21T09:37:52.1970947Z             },
2026-06-21T09:37:52.1971028Z             {
2026-06-21T09:37:52.1971143Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1971224Z               "line": 153
2026-06-21T09:37:52.1971309Z             },
2026-06-21T09:37:52.1971385Z             {
2026-06-21T09:37:52.1971496Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1971585Z               "line": 165
2026-06-21T09:37:52.1971662Z             },
2026-06-21T09:37:52.1971763Z             {
2026-06-21T09:37:52.1971872Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1971972Z               "line": 242
2026-06-21T09:37:52.1972053Z             },
2026-06-21T09:37:52.1972140Z             {
2026-06-21T09:37:52.1972248Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1972333Z               "line": 267
2026-06-21T09:37:52.1972525Z             },
2026-06-21T09:37:52.1972610Z             {
2026-06-21T09:37:52.1972724Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1972806Z               "line": 293
2026-06-21T09:37:52.1972887Z             },
2026-06-21T09:37:52.1972972Z             {
2026-06-21T09:37:52.1973078Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:37:52.1973163Z               "line": 51
2026-06-21T09:37:52.1973244Z             },
2026-06-21T09:37:52.1973324Z             {
2026-06-21T09:37:52.1973426Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1973521Z               "line": 333
2026-06-21T09:37:52.1973697Z             },
2026-06-21T09:37:52.1973783Z             {
2026-06-21T09:37:52.1973902Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1973988Z               "line": 373
2026-06-21T09:37:52.1974065Z             },
2026-06-21T09:37:52.1974146Z             {
2026-06-21T09:37:52.1974255Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1974341Z               "line": 602
2026-06-21T09:37:52.1974423Z             },
2026-06-21T09:37:52.1974503Z             {
2026-06-21T09:37:52.1974621Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1974716Z               "line": 132
2026-06-21T09:37:52.1974796Z             },
2026-06-21T09:37:52.1974876Z             {
2026-06-21T09:37:52.1974991Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1975073Z               "line": 448
2026-06-21T09:37:52.1975163Z             },
2026-06-21T09:37:52.1975243Z             {
2026-06-21T09:37:52.1975368Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T09:37:52.1975458Z               "line": 74
2026-06-21T09:37:52.1975543Z             },
2026-06-21T09:37:52.1975635Z             {
2026-06-21T09:37:52.1975749Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1975849Z               "line": 605
2026-06-21T09:37:52.1975930Z             },
2026-06-21T09:37:52.1976017Z             {
2026-06-21T09:37:52.1976130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1976226Z               "line": 396
2026-06-21T09:37:52.1976312Z             },
2026-06-21T09:37:52.1976393Z             {
2026-06-21T09:37:52.1976502Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1976594Z               "line": 6518
2026-06-21T09:37:52.1976689Z             }
2026-06-21T09:37:52.1976769Z           ]
2026-06-21T09:37:52.1976855Z         },
2026-06-21T09:37:52.1976942Z         "int": {
2026-06-21T09:37:52.1977036Z           "complete": true,
2026-06-21T09:37:52.1977127Z           "evidence": [
2026-06-21T09:37:52.1977204Z             {
2026-06-21T09:37:52.1977323Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.1977412Z               "line": 1262
2026-06-21T09:37:52.1977497Z             },
2026-06-21T09:37:52.1977583Z             {
2026-06-21T09:37:52.1977701Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T09:37:52.1977776Z               "line": 17
2026-06-21T09:37:52.1977858Z             }
2026-06-21T09:37:52.1977944Z           ]
2026-06-21T09:37:52.1978016Z         },
2026-06-21T09:37:52.1978105Z         "unit": {
2026-06-21T09:37:52.1978201Z           "complete": true,
2026-06-21T09:37:52.1978287Z           "evidence": [
2026-06-21T09:37:52.1978373Z             {
2026-06-21T09:37:52.1978482Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1978574Z               "line": 311
2026-06-21T09:37:52.1978645Z             },
2026-06-21T09:37:52.1978730Z             {
2026-06-21T09:37:52.1978850Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1978936Z               "line": 325
2026-06-21T09:37:52.1979112Z             },
2026-06-21T09:37:52.1979189Z             {
2026-06-21T09:37:52.1979307Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1979518Z               "line": 343
2026-06-21T09:37:52.1979603Z             },
2026-06-21T09:37:52.1979684Z             {
2026-06-21T09:37:52.1979795Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1979881Z               "line": 364
2026-06-21T09:37:52.1979960Z             },
2026-06-21T09:37:52.1980050Z             {
2026-06-21T09:37:52.1980160Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T09:37:52.1980249Z               "line": 376
2026-06-21T09:37:52.1980338Z             },
2026-06-21T09:37:52.1980415Z             {
2026-06-21T09:37:52.1980535Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1980715Z               "line": 897
2026-06-21T09:37:52.1980802Z             },
2026-06-21T09:37:52.1980878Z             {
2026-06-21T09:37:52.1981001Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1981093Z               "line": 957
2026-06-21T09:37:52.1981173Z             },
2026-06-21T09:37:52.1981268Z             {
2026-06-21T09:37:52.1981393Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T09:37:52.1981483Z               "line": 338
2026-06-21T09:37:52.1981564Z             },
2026-06-21T09:37:52.1981645Z             {
2026-06-21T09:37:52.1981751Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.1981826Z               "line": 769
2026-06-21T09:37:52.1981917Z             },
2026-06-21T09:37:52.1981998Z             {
2026-06-21T09:37:52.1982104Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1982183Z               "line": 8836
2026-06-21T09:37:52.1982265Z             }
2026-06-21T09:37:52.1982352Z           ]
2026-06-21T09:37:52.1982437Z         }
2026-06-21T09:37:52.1982517Z       }
2026-06-21T09:37:52.1982599Z     },
2026-06-21T09:37:52.1982681Z     {
2026-06-21T09:37:52.1982766Z       "id": "REQ-SHELL-4",
2026-06-21T09:37:52.1984563Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T09:37:52.1984668Z       "requiredStages": [
2026-06-21T09:37:52.1984748Z         "doc",
2026-06-21T09:37:52.1984829Z         "impl",
2026-06-21T09:37:52.1984911Z         "unit",
2026-06-21T09:37:52.1985001Z         "int"
2026-06-21T09:37:52.1985087Z       ],
2026-06-21T09:37:52.1985167Z       "stages": {
2026-06-21T09:37:52.1985258Z         "doc": {
2026-06-21T09:37:52.1985342Z           "complete": true,
2026-06-21T09:37:52.1985432Z           "evidence": [
2026-06-21T09:37:52.1985522Z             {
2026-06-21T09:37:52.1985618Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.1985703Z               "line": 281
2026-06-21T09:37:52.1985788Z             },
2026-06-21T09:37:52.1985875Z             {
2026-06-21T09:37:52.1986099Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T09:37:52.1986200Z               "line": 88
2026-06-21T09:37:52.1986286Z             }
2026-06-21T09:37:52.1986366Z           ]
2026-06-21T09:37:52.1986456Z         },
2026-06-21T09:37:52.1986543Z         "impl": {
2026-06-21T09:37:52.1986638Z           "complete": true,
2026-06-21T09:37:52.1986724Z           "evidence": [
2026-06-21T09:37:52.1986824Z             {
2026-06-21T09:37:52.1986943Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.1987034Z               "line": 243
2026-06-21T09:37:52.1987120Z             },
2026-06-21T09:37:52.1987192Z             {
2026-06-21T09:37:52.1987310Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T09:37:52.1987493Z               "line": 61
2026-06-21T09:37:52.1987573Z             },
2026-06-21T09:37:52.1987658Z             {
2026-06-21T09:37:52.1987764Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1987860Z               "line": 218
2026-06-21T09:37:52.1987944Z             },
2026-06-21T09:37:52.1988034Z             {
2026-06-21T09:37:52.1988148Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.1988233Z               "line": 245
2026-06-21T09:37:52.1988317Z             },
2026-06-21T09:37:52.1988398Z             {
2026-06-21T09:37:52.1988510Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1988660Z               "line": 616
2026-06-21T09:37:52.1988742Z             },
2026-06-21T09:37:52.1988824Z             {
2026-06-21T09:37:52.1988924Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1989077Z               "line": 1191
2026-06-21T09:37:52.1989158Z             },
2026-06-21T09:37:52.1989253Z             {
2026-06-21T09:37:52.1989367Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1989458Z               "line": 1203
2026-06-21T09:37:52.1989543Z             },
2026-06-21T09:37:52.1989624Z             {
2026-06-21T09:37:52.1989735Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.1989820Z               "line": 1244
2026-06-21T09:37:52.1989906Z             },
2026-06-21T09:37:52.1989977Z             {
2026-06-21T09:37:52.1990102Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.1990186Z               "line": 456
2026-06-21T09:37:52.1990263Z             },
2026-06-21T09:37:52.1990355Z             {
2026-06-21T09:37:52.1990469Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1990563Z               "line": 44
2026-06-21T09:37:52.1990643Z             },
2026-06-21T09:37:52.1990725Z             {
2026-06-21T09:37:52.1990842Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1990922Z               "line": 208
2026-06-21T09:37:52.1991004Z             },
2026-06-21T09:37:52.1991085Z             {
2026-06-21T09:37:52.1991203Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1991285Z               "line": 227
2026-06-21T09:37:52.1991372Z             },
2026-06-21T09:37:52.1991458Z             {
2026-06-21T09:37:52.1991561Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1991648Z               "line": 253
2026-06-21T09:37:52.1991719Z             },
2026-06-21T09:37:52.1991796Z             {
2026-06-21T09:37:52.1991909Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1992001Z               "line": 272
2026-06-21T09:37:52.1992086Z             },
2026-06-21T09:37:52.1992157Z             {
2026-06-21T09:37:52.1992282Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1992368Z               "line": 392
2026-06-21T09:37:52.1992454Z             },
2026-06-21T09:37:52.1992539Z             {
2026-06-21T09:37:52.1992645Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1992729Z               "line": 421
2026-06-21T09:37:52.1992806Z             },
2026-06-21T09:37:52.1992888Z             {
2026-06-21T09:37:52.1992998Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1993082Z               "line": 439
2026-06-21T09:37:52.1993169Z             },
2026-06-21T09:37:52.1993246Z             {
2026-06-21T09:37:52.1993359Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1993444Z               "line": 458
2026-06-21T09:37:52.1993535Z             },
2026-06-21T09:37:52.1993616Z             {
2026-06-21T09:37:52.1993725Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.1993815Z               "line": 486
2026-06-21T09:37:52.1993888Z             },
2026-06-21T09:37:52.1993978Z             {
2026-06-21T09:37:52.1994097Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1994298Z               "line": 624
2026-06-21T09:37:52.1994378Z             },
2026-06-21T09:37:52.1994464Z             {
2026-06-21T09:37:52.1994575Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.1994655Z               "line": 829
2026-06-21T09:37:52.1994741Z             },
2026-06-21T09:37:52.1994818Z             {
2026-06-21T09:37:52.1994946Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.1995027Z               "line": 435
2026-06-21T09:37:52.1995113Z             },
2026-06-21T09:37:52.1998873Z             {
2026-06-21T09:37:52.1999141Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.1999578Z               "line": 6574
2026-06-21T09:37:52.1999665Z             }
2026-06-21T09:37:52.1999756Z           ]
2026-06-21T09:37:52.1999836Z         },
2026-06-21T09:37:52.1999922Z         "int": {
2026-06-21T09:37:52.2000023Z           "complete": true,
2026-06-21T09:37:52.2000108Z           "evidence": [
2026-06-21T09:37:52.2000198Z             {
2026-06-21T09:37:52.2000324Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T09:37:52.2000418Z               "line": 18
2026-06-21T09:37:52.2000499Z             }
2026-06-21T09:37:52.2000581Z           ]
2026-06-21T09:37:52.2000672Z         },
2026-06-21T09:37:52.2000756Z         "unit": {
2026-06-21T09:37:52.2000842Z           "complete": true,
2026-06-21T09:37:52.2000925Z           "evidence": [
2026-06-21T09:37:52.2001006Z             {
2026-06-21T09:37:52.2001123Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.2001213Z               "line": 1479
2026-06-21T09:37:52.2001309Z             },
2026-06-21T09:37:52.2001374Z             {
2026-06-21T09:37:52.2001502Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.2001583Z               "line": 1508
2026-06-21T09:37:52.2001670Z             },
2026-06-21T09:37:52.2001745Z             {
2026-06-21T09:37:52.2001874Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.2001974Z               "line": 504
2026-06-21T09:37:52.2002055Z             },
2026-06-21T09:37:52.2002136Z             {
2026-06-21T09:37:52.2002256Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.2002337Z               "line": 514
2026-06-21T09:37:52.2002421Z             },
2026-06-21T09:37:52.2002499Z             {
2026-06-21T09:37:52.2002627Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.2002713Z               "line": 531
2026-06-21T09:37:52.2002789Z             },
2026-06-21T09:37:52.2002867Z             {
2026-06-21T09:37:52.2002995Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.2003090Z               "line": 543
2026-06-21T09:37:52.2003167Z             },
2026-06-21T09:37:52.2003257Z             {
2026-06-21T09:37:52.2003366Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T09:37:52.2003453Z               "line": 555
2026-06-21T09:37:52.2003539Z             },
2026-06-21T09:37:52.2003628Z             {
2026-06-21T09:37:52.2003744Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2003830Z               "line": 1145
2026-06-21T09:37:52.2003915Z             },
2026-06-21T09:37:52.2003995Z             {
2026-06-21T09:37:52.2004104Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.2004181Z               "line": 776
2026-06-21T09:37:52.2004267Z             }
2026-06-21T09:37:52.2004357Z           ]
2026-06-21T09:37:52.2004434Z         }
2026-06-21T09:37:52.2004520Z       }
2026-06-21T09:37:52.2004600Z     },
2026-06-21T09:37:52.2004681Z     {
2026-06-21T09:37:52.2004763Z       "id": "REQ-SHELL-5",
2026-06-21T09:37:52.2006022Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T09:37:52.2006245Z       "requiredStages": [
2026-06-21T09:37:52.2006325Z         "doc",
2026-06-21T09:37:52.2006416Z         "impl",
2026-06-21T09:37:52.2006495Z         "unit",
2026-06-21T09:37:52.2006590Z         "int"
2026-06-21T09:37:52.2006690Z       ],
2026-06-21T09:37:52.2006777Z       "stages": {
2026-06-21T09:37:52.2006862Z         "doc": {
2026-06-21T09:37:52.2006952Z           "complete": true,
2026-06-21T09:37:52.2007048Z           "evidence": [
2026-06-21T09:37:52.2007210Z             {
2026-06-21T09:37:52.2007310Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.2007396Z               "line": 284
2026-06-21T09:37:52.2007481Z             }
2026-06-21T09:37:52.2007567Z           ]
2026-06-21T09:37:52.2007635Z         },
2026-06-21T09:37:52.2007725Z         "impl": {
2026-06-21T09:37:52.2007806Z           "complete": true,
2026-06-21T09:37:52.2007891Z           "evidence": [
2026-06-21T09:37:52.2007974Z             {
2026-06-21T09:37:52.2008087Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T09:37:52.2008168Z               "line": 260
2026-06-21T09:37:52.2008250Z             }
2026-06-21T09:37:52.2008341Z           ]
2026-06-21T09:37:52.2008421Z         },
2026-06-21T09:37:52.2008507Z         "int": {
2026-06-21T09:37:52.2008589Z           "complete": true,
2026-06-21T09:37:52.2008679Z           "evidence": [
2026-06-21T09:37:52.2008769Z             {
2026-06-21T09:37:52.2008885Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.2009059Z               "line": 827
2026-06-21T09:37:52.2009135Z             },
2026-06-21T09:37:52.2009221Z             {
2026-06-21T09:37:52.2009348Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.2009434Z               "line": 1290
2026-06-21T09:37:52.2009519Z             },
2026-06-21T09:37:52.2009605Z             {
2026-06-21T09:37:52.2009757Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T09:37:52.2009843Z               "line": 23
2026-06-21T09:37:52.2009935Z             }
2026-06-21T09:37:52.2010016Z           ]
2026-06-21T09:37:52.2010091Z         },
2026-06-21T09:37:52.2010182Z         "unit": {
2026-06-21T09:37:52.2010273Z           "complete": true,
2026-06-21T09:37:52.2010363Z           "evidence": [
2026-06-21T09:37:52.2010434Z             {
2026-06-21T09:37:52.2010559Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T09:37:52.2010645Z               "line": 803
2026-06-21T09:37:52.2010721Z             }
2026-06-21T09:37:52.2010807Z           ]
2026-06-21T09:37:52.2010888Z         }
2026-06-21T09:37:52.2010974Z       }
2026-06-21T09:37:52.2011055Z     },
2026-06-21T09:37:52.2011141Z     {
2026-06-21T09:37:52.2011237Z       "id": "REQ-START-1",
2026-06-21T09:37:52.2011422Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T09:37:52.2011528Z       "requiredStages": [
2026-06-21T09:37:52.2011603Z         "impl",
2026-06-21T09:37:52.2011687Z         "unit"
2026-06-21T09:37:52.2011768Z       ],
2026-06-21T09:37:52.2011849Z       "stages": {
2026-06-21T09:37:52.2011934Z         "doc": {
2026-06-21T09:37:52.2012023Z           "complete": false,
2026-06-21T09:37:52.2012119Z           "evidence": []
2026-06-21T09:37:52.2012192Z         },
2026-06-21T09:37:52.2012277Z         "impl": {
2026-06-21T09:37:52.2012367Z           "complete": true,
2026-06-21T09:37:52.2012449Z           "evidence": [
2026-06-21T09:37:52.2012539Z             {
2026-06-21T09:37:52.2012653Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T09:37:52.2012734Z               "line": 16
2026-06-21T09:37:52.2012816Z             }
2026-06-21T09:37:52.2012902Z           ]
2026-06-21T09:37:52.2012982Z         },
2026-06-21T09:37:52.2013079Z         "int": {
2026-06-21T09:37:52.2013174Z           "complete": false,
2026-06-21T09:37:52.2013368Z           "evidence": []
2026-06-21T09:37:52.2013455Z         },
2026-06-21T09:37:52.2013535Z         "unit": {
2026-06-21T09:37:52.2013625Z           "complete": true,
2026-06-21T09:37:52.2013713Z           "evidence": [
2026-06-21T09:37:52.2013794Z             {
2026-06-21T09:37:52.2013903Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T09:37:52.2013989Z               "line": 48
2026-06-21T09:37:52.2014071Z             },
2026-06-21T09:37:52.2014151Z             {
2026-06-21T09:37:52.2014260Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T09:37:52.2014347Z               "line": 63
2026-06-21T09:37:52.2014428Z             }
2026-06-21T09:37:52.2014621Z           ]
2026-06-21T09:37:52.2014698Z         }
2026-06-21T09:37:52.2014780Z       }
2026-06-21T09:37:52.2014860Z     },
2026-06-21T09:37:52.2014950Z     {
2026-06-21T09:37:52.2015047Z       "id": "REQ-START-2",
2026-06-21T09:37:52.2015189Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T09:37:52.2015294Z       "requiredStages": [
2026-06-21T09:37:52.2015376Z         "impl",
2026-06-21T09:37:52.2015471Z         "unit",
2026-06-21T09:37:52.2015551Z         "int"
2026-06-21T09:37:52.2015638Z       ],
2026-06-21T09:37:52.2015719Z       "stages": {
2026-06-21T09:37:52.2015805Z         "doc": {
2026-06-21T09:37:52.2015890Z           "complete": false,
2026-06-21T09:37:52.2015976Z           "evidence": []
2026-06-21T09:37:52.2016057Z         },
2026-06-21T09:37:52.2016143Z         "impl": {
2026-06-21T09:37:52.2016233Z           "complete": true,
2026-06-21T09:37:52.2016315Z           "evidence": [
2026-06-21T09:37:52.2016405Z             {
2026-06-21T09:37:52.2016524Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2016611Z               "line": 16
2026-06-21T09:37:52.2016696Z             },
2026-06-21T09:37:52.2016767Z             {
2026-06-21T09:37:52.2016890Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2016971Z               "line": 115
2026-06-21T09:37:52.2017065Z             },
2026-06-21T09:37:52.2017155Z             {
2026-06-21T09:37:52.2017260Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2017342Z               "line": 300
2026-06-21T09:37:52.2017422Z             }
2026-06-21T09:37:52.2017512Z           ]
2026-06-21T09:37:52.2017594Z         },
2026-06-21T09:37:52.2017680Z         "int": {
2026-06-21T09:37:52.2017770Z           "complete": true,
2026-06-21T09:37:52.2017851Z           "evidence": [
2026-06-21T09:37:52.2017938Z             {
2026-06-21T09:37:52.2018051Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:52.2018137Z               "line": 186
2026-06-21T09:37:52.2018224Z             }
2026-06-21T09:37:52.2018309Z           ]
2026-06-21T09:37:52.2018394Z         },
2026-06-21T09:37:52.2018475Z         "unit": {
2026-06-21T09:37:52.2018567Z           "complete": true,
2026-06-21T09:37:52.2018657Z           "evidence": [
2026-06-21T09:37:52.2018743Z             {
2026-06-21T09:37:52.2018849Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2018933Z               "line": 590
2026-06-21T09:37:52.2019115Z             },
2026-06-21T09:37:52.2019188Z             {
2026-06-21T09:37:52.2019295Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2019377Z               "line": 623
2026-06-21T09:37:52.2019455Z             }
2026-06-21T09:37:52.2019536Z           ]
2026-06-21T09:37:52.2019615Z         }
2026-06-21T09:37:52.2019700Z       }
2026-06-21T09:37:52.2019776Z     },
2026-06-21T09:37:52.2019867Z     {
2026-06-21T09:37:52.2019950Z       "id": "REQ-START-3",
2026-06-21T09:37:52.2020127Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T09:37:52.2020209Z       "requiredStages": [
2026-06-21T09:37:52.2020294Z         "impl",
2026-06-21T09:37:52.2020374Z         "unit",
2026-06-21T09:37:52.2020457Z         "int"
2026-06-21T09:37:52.2020537Z       ],
2026-06-21T09:37:52.2020618Z       "stages": {
2026-06-21T09:37:52.2020809Z         "doc": {
2026-06-21T09:37:52.2020890Z           "complete": false,
2026-06-21T09:37:52.2020980Z           "evidence": []
2026-06-21T09:37:52.2021071Z         },
2026-06-21T09:37:52.2021148Z         "impl": {
2026-06-21T09:37:52.2021238Z           "complete": true,
2026-06-21T09:37:52.2021324Z           "evidence": [
2026-06-21T09:37:52.2021401Z             {
2026-06-21T09:37:52.2021510Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.2021595Z               "line": 23
2026-06-21T09:37:52.2021677Z             },
2026-06-21T09:37:52.2021759Z             {
2026-06-21T09:37:52.2021877Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.2022083Z               "line": 205
2026-06-21T09:37:52.2022172Z             },
2026-06-21T09:37:52.2022252Z             {
2026-06-21T09:37:52.2022367Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.2022452Z               "line": 221
2026-06-21T09:37:52.2022541Z             },
2026-06-21T09:37:52.2022626Z             {
2026-06-21T09:37:52.2022722Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2022814Z               "line": 17
2026-06-21T09:37:52.2022894Z             },
2026-06-21T09:37:52.2022979Z             {
2026-06-21T09:37:52.2023090Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2023171Z               "line": 35
2026-06-21T09:37:52.2023246Z             },
2026-06-21T09:37:52.2023324Z             {
2026-06-21T09:37:52.2023438Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2023518Z               "line": 116
2026-06-21T09:37:52.2023609Z             }
2026-06-21T09:37:52.2023691Z           ]
2026-06-21T09:37:52.2023767Z         },
2026-06-21T09:37:52.2023843Z         "int": {
2026-06-21T09:37:52.2023929Z           "complete": true,
2026-06-21T09:37:52.2024020Z           "evidence": [
2026-06-21T09:37:52.2024096Z             {
2026-06-21T09:37:52.2024215Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T09:37:52.2024320Z               "line": 488
2026-06-21T09:37:52.2024401Z             }
2026-06-21T09:37:52.2024482Z           ]
2026-06-21T09:37:52.2024563Z         },
2026-06-21T09:37:52.2024655Z         "unit": {
2026-06-21T09:37:52.2024739Z           "complete": true,
2026-06-21T09:37:52.2024825Z           "evidence": [
2026-06-21T09:37:52.2024907Z             {
2026-06-21T09:37:52.2025016Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.2025101Z               "line": 381
2026-06-21T09:37:52.2025186Z             },
2026-06-21T09:37:52.2025267Z             {
2026-06-21T09:37:52.2025373Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.2025462Z               "line": 402
2026-06-21T09:37:52.2025549Z             },
2026-06-21T09:37:52.2025626Z             {
2026-06-21T09:37:52.2025730Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T09:37:52.2025815Z               "line": 412
2026-06-21T09:37:52.2025902Z             },
2026-06-21T09:37:52.2025988Z             {
2026-06-21T09:37:52.2026087Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2026178Z               "line": 591
2026-06-21T09:37:52.2026260Z             },
2026-06-21T09:37:52.2026345Z             {
2026-06-21T09:37:52.2026455Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2026541Z               "line": 624
2026-06-21T09:37:52.2026627Z             },
2026-06-21T09:37:52.2026708Z             {
2026-06-21T09:37:52.2026823Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2026909Z               "line": 657
2026-06-21T09:37:52.2026998Z             }
2026-06-21T09:37:52.2027079Z           ]
2026-06-21T09:37:52.2027157Z         }
2026-06-21T09:37:52.2027242Z       }
2026-06-21T09:37:52.2027322Z     },
2026-06-21T09:37:52.2027407Z     {
2026-06-21T09:37:52.2027488Z       "id": "REQ-START-4",
2026-06-21T09:37:52.2027630Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T09:37:52.2027820Z       "requiredStages": [
2026-06-21T09:37:52.2027902Z         "impl",
2026-06-21T09:37:52.2027982Z         "unit"
2026-06-21T09:37:52.2028063Z       ],
2026-06-21T09:37:52.2028149Z       "stages": {
2026-06-21T09:37:52.2028225Z         "doc": {
2026-06-21T09:37:52.2028320Z           "complete": false,
2026-06-21T09:37:52.2028406Z           "evidence": []
2026-06-21T09:37:52.2028493Z         },
2026-06-21T09:37:52.2028574Z         "impl": {
2026-06-21T09:37:52.2028663Z           "complete": true,
2026-06-21T09:37:52.2028751Z           "evidence": [
2026-06-21T09:37:52.2028832Z             {
2026-06-21T09:37:52.2029118Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.2029193Z               "line": 585
2026-06-21T09:37:52.2029274Z             }
2026-06-21T09:37:52.2029360Z           ]
2026-06-21T09:37:52.2029442Z         },
2026-06-21T09:37:52.2029531Z         "int": {
2026-06-21T09:37:52.2029612Z           "complete": false,
2026-06-21T09:37:52.2029714Z           "evidence": []
2026-06-21T09:37:52.2029795Z         },
2026-06-21T09:37:52.2029884Z         "unit": {
2026-06-21T09:37:52.2029980Z           "complete": true,
2026-06-21T09:37:52.2030062Z           "evidence": [
2026-06-21T09:37:52.2030142Z             {
2026-06-21T09:37:52.2030246Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.2030332Z               "line": 1026
2026-06-21T09:37:52.2030413Z             }
2026-06-21T09:37:52.2030497Z           ]
2026-06-21T09:37:52.2030582Z         }
2026-06-21T09:37:52.2030664Z       }
2026-06-21T09:37:52.2030754Z     },
2026-06-21T09:37:52.2030830Z     {
2026-06-21T09:37:52.2030934Z       "id": "REQ-START-5",
2026-06-21T09:37:52.2033707Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T09:37:52.2033821Z       "requiredStages": [
2026-06-21T09:37:52.2033903Z         "doc",
2026-06-21T09:37:52.2033993Z         "impl",
2026-06-21T09:37:52.2034078Z         "unit",
2026-06-21T09:37:52.2034155Z         "int"
2026-06-21T09:37:52.2034237Z       ],
2026-06-21T09:37:52.2034322Z       "stages": {
2026-06-21T09:37:52.2034407Z         "doc": {
2026-06-21T09:37:52.2034503Z           "complete": true,
2026-06-21T09:37:52.2034589Z           "evidence": [
2026-06-21T09:37:52.2034665Z             {
2026-06-21T09:37:52.2034765Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.2034853Z               "line": 176
2026-06-21T09:37:52.2034942Z             },
2026-06-21T09:37:52.2035018Z             {
2026-06-21T09:37:52.2035167Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T09:37:52.2035252Z               "line": 28
2026-06-21T09:37:52.2035332Z             }
2026-06-21T09:37:52.2035419Z           ]
2026-06-21T09:37:52.2035497Z         },
2026-06-21T09:37:52.2035586Z         "impl": {
2026-06-21T09:37:52.2035666Z           "complete": true,
2026-06-21T09:37:52.2035756Z           "evidence": [
2026-06-21T09:37:52.2035833Z             {
2026-06-21T09:37:52.2035952Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.2036032Z               "line": 26
2026-06-21T09:37:52.2036229Z             },
2026-06-21T09:37:52.2036314Z             {
2026-06-21T09:37:52.2036429Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.2036524Z               "line": 212
2026-06-21T09:37:52.2036610Z             },
2026-06-21T09:37:52.2036690Z             {
2026-06-21T09:37:52.2036806Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.2036891Z               "line": 221
2026-06-21T09:37:52.2036977Z             },
2026-06-21T09:37:52.2037053Z             {
2026-06-21T09:37:52.2037164Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.2037254Z               "line": 485
2026-06-21T09:37:52.2037421Z             },
2026-06-21T09:37:52.2037507Z             {
2026-06-21T09:37:52.2037616Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2037702Z               "line": 36
2026-06-21T09:37:52.2037784Z             },
2026-06-21T09:37:52.2037859Z             {
2026-06-21T09:37:52.2037963Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2038049Z               "line": 118
2026-06-21T09:37:52.2038134Z             },
2026-06-21T09:37:52.2038213Z             {
2026-06-21T09:37:52.2038322Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T09:37:52.2038399Z               "line": 329
2026-06-21T09:37:52.2038482Z             }
2026-06-21T09:37:52.2038561Z           ]
2026-06-21T09:37:52.2038633Z         },
2026-06-21T09:37:52.2038714Z         "int": {
2026-06-21T09:37:52.2038800Z           "complete": true,
2026-06-21T09:37:52.2038885Z           "evidence": [
2026-06-21T09:37:52.2039044Z             {
2026-06-21T09:37:52.2039172Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T09:37:52.2039257Z               "line": 17
2026-06-21T09:37:52.2039339Z             }
2026-06-21T09:37:52.2039434Z           ]
2026-06-21T09:37:52.2039520Z         },
2026-06-21T09:37:52.2039596Z         "unit": {
2026-06-21T09:37:52.2039678Z           "complete": true,
2026-06-21T09:37:52.2039763Z           "evidence": [
2026-06-21T09:37:52.2039853Z             {
2026-06-21T09:37:52.2039969Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.2040050Z               "line": 358
2026-06-21T09:37:52.2040130Z             },
2026-06-21T09:37:52.2040211Z             {
2026-06-21T09:37:52.2040308Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T09:37:52.2040402Z               "line": 371
2026-06-21T09:37:52.2040483Z             },
2026-06-21T09:37:52.2040565Z             {
2026-06-21T09:37:52.2040675Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T09:37:52.2040759Z               "line": 597
2026-06-21T09:37:52.2040853Z             }
2026-06-21T09:37:52.2040930Z           ]
2026-06-21T09:37:52.2041020Z         }
2026-06-21T09:37:52.2041109Z       }
2026-06-21T09:37:52.2041189Z     },
2026-06-21T09:37:52.2041276Z     {
2026-06-21T09:37:52.2041363Z       "id": "REQ-STORE-1",
2026-06-21T09:37:52.2042201Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T09:37:52.2042292Z       "requiredStages": [
2026-06-21T09:37:52.2042373Z         "impl",
2026-06-21T09:37:52.2042458Z         "unit"
2026-06-21T09:37:52.2042541Z       ],
2026-06-21T09:37:52.2042621Z       "stages": {
2026-06-21T09:37:52.2042706Z         "doc": {
2026-06-21T09:37:52.2042797Z           "complete": false,
2026-06-21T09:37:52.2042894Z           "evidence": []
2026-06-21T09:37:52.2042977Z         },
2026-06-21T09:37:52.2043059Z         "impl": {
2026-06-21T09:37:52.2043137Z           "complete": true,
2026-06-21T09:37:52.2043218Z           "evidence": [
2026-06-21T09:37:52.2043302Z             {
2026-06-21T09:37:52.2043429Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2043628Z               "line": 23
2026-06-21T09:37:52.2043709Z             },
2026-06-21T09:37:52.2043790Z             {
2026-06-21T09:37:52.2043910Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2044000Z               "line": 46
2026-06-21T09:37:52.2044081Z             },
2026-06-21T09:37:52.2044163Z             {
2026-06-21T09:37:52.2044277Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2044362Z               "line": 97
2026-06-21T09:37:52.2044439Z             },
2026-06-21T09:37:52.2044520Z             {
2026-06-21T09:37:52.2044638Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2044825Z               "line": 125
2026-06-21T09:37:52.2044901Z             },
2026-06-21T09:37:52.2044987Z             {
2026-06-21T09:37:52.2045098Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2045178Z               "line": 207
2026-06-21T09:37:52.2045259Z             },
2026-06-21T09:37:52.2045344Z             {
2026-06-21T09:37:52.2045464Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2045554Z               "line": 231
2026-06-21T09:37:52.2045636Z             },
2026-06-21T09:37:52.2045708Z             {
2026-06-21T09:37:52.2045821Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2045897Z               "line": 467
2026-06-21T09:37:52.2045994Z             },
2026-06-21T09:37:52.2046076Z             {
2026-06-21T09:37:52.2046197Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2046287Z               "line": 25
2026-06-21T09:37:52.2046369Z             },
2026-06-21T09:37:52.2046456Z             {
2026-06-21T09:37:52.2046574Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2046664Z               "line": 120
2026-06-21T09:37:52.2046746Z             },
2026-06-21T09:37:52.2046827Z             {
2026-06-21T09:37:52.2046945Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2047023Z               "line": 148
2026-06-21T09:37:52.2047108Z             },
2026-06-21T09:37:52.2047179Z             {
2026-06-21T09:37:52.2047303Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2047389Z               "line": 165
2026-06-21T09:37:52.2047465Z             },
2026-06-21T09:37:52.2047556Z             {
2026-06-21T09:37:52.2047671Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2047761Z               "line": 180
2026-06-21T09:37:52.2047842Z             },
2026-06-21T09:37:52.2047929Z             {
2026-06-21T09:37:52.2048043Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2048123Z               "line": 198
2026-06-21T09:37:52.2048209Z             },
2026-06-21T09:37:52.2048277Z             {
2026-06-21T09:37:52.2048404Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2048499Z               "line": 207
2026-06-21T09:37:52.2048575Z             },
2026-06-21T09:37:52.2048651Z             {
2026-06-21T09:37:52.2048759Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:37:52.2048844Z               "line": 16
2026-06-21T09:37:52.2048926Z             },
2026-06-21T09:37:52.2049107Z             {
2026-06-21T09:37:52.2049231Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:37:52.2049313Z               "line": 63
2026-06-21T09:37:52.2049393Z             }
2026-06-21T09:37:52.2049459Z           ]
2026-06-21T09:37:52.2049546Z         },
2026-06-21T09:37:52.2049623Z         "int": {
2026-06-21T09:37:52.2049718Z           "complete": false,
2026-06-21T09:37:52.2049817Z           "evidence": []
2026-06-21T09:37:52.2049895Z         },
2026-06-21T09:37:52.2049990Z         "unit": {
2026-06-21T09:37:52.2050080Z           "complete": true,
2026-06-21T09:37:52.2050166Z           "evidence": [
2026-06-21T09:37:52.2050233Z             {
2026-06-21T09:37:52.2050362Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2050558Z               "line": 584
2026-06-21T09:37:52.2050643Z             },
2026-06-21T09:37:52.2050724Z             {
2026-06-21T09:37:52.2050835Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2050920Z               "line": 594
2026-06-21T09:37:52.2050999Z             },
2026-06-21T09:37:52.2051081Z             {
2026-06-21T09:37:52.2051202Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2051277Z               "line": 616
2026-06-21T09:37:52.2051361Z             },
2026-06-21T09:37:52.2051442Z             {
2026-06-21T09:37:52.2051557Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2051740Z               "line": 632
2026-06-21T09:37:52.2051822Z             },
2026-06-21T09:37:52.2051908Z             {
2026-06-21T09:37:52.2052021Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T09:37:52.2052098Z               "line": 690
2026-06-21T09:37:52.2052190Z             },
2026-06-21T09:37:52.2052271Z             {
2026-06-21T09:37:52.2052389Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2052471Z               "line": 472
2026-06-21T09:37:52.2052561Z             },
2026-06-21T09:37:52.2052637Z             {
2026-06-21T09:37:52.2052762Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T09:37:52.2052843Z               "line": 507
2026-06-21T09:37:52.2052929Z             },
2026-06-21T09:37:52.2053004Z             {
2026-06-21T09:37:52.2053110Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:37:52.2053195Z               "line": 120
2026-06-21T09:37:52.2053290Z             },
2026-06-21T09:37:52.2053367Z             {
2026-06-21T09:37:52.2053477Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T09:37:52.2053561Z               "line": 128
2026-06-21T09:37:52.2053643Z             }
2026-06-21T09:37:52.2053716Z           ]
2026-06-21T09:37:52.2053802Z         }
2026-06-21T09:37:52.2053881Z       }
2026-06-21T09:37:52.2053971Z     },
2026-06-21T09:37:52.2054047Z     {
2026-06-21T09:37:52.2054128Z       "id": "REQ-SUBNET-1",
2026-06-21T09:37:52.2054437Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T09:37:52.2054517Z       "requiredStages": [
2026-06-21T09:37:52.2054603Z         "impl",
2026-06-21T09:37:52.2054679Z         "unit"
2026-06-21T09:37:52.2054766Z       ],
2026-06-21T09:37:52.2054846Z       "stages": {
2026-06-21T09:37:52.2054936Z         "doc": {
2026-06-21T09:37:52.2055028Z           "complete": false,
2026-06-21T09:37:52.2055123Z           "evidence": []
2026-06-21T09:37:52.2055198Z         },
2026-06-21T09:37:52.2055280Z         "impl": {
2026-06-21T09:37:52.2055367Z           "complete": true,
2026-06-21T09:37:52.2055452Z           "evidence": [
2026-06-21T09:37:52.2055532Z             {
2026-06-21T09:37:52.2055663Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2055747Z               "line": 281
2026-06-21T09:37:52.2055833Z             },
2026-06-21T09:37:52.2055914Z             {
2026-06-21T09:37:52.2056048Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2056134Z               "line": 651
2026-06-21T09:37:52.2056219Z             },
2026-06-21T09:37:52.2056307Z             {
2026-06-21T09:37:52.2056409Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2056501Z               "line": 3399
2026-06-21T09:37:52.2056583Z             },
2026-06-21T09:37:52.2056669Z             {
2026-06-21T09:37:52.2056767Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2056866Z               "line": 3709
2026-06-21T09:37:52.2056939Z             },
2026-06-21T09:37:52.2057016Z             {
2026-06-21T09:37:52.2057119Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2057210Z               "line": 3728
2026-06-21T09:37:52.2057401Z             },
2026-06-21T09:37:52.2057482Z             {
2026-06-21T09:37:52.2057588Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2057678Z               "line": 3792
2026-06-21T09:37:52.2057758Z             },
2026-06-21T09:37:52.2057840Z             {
2026-06-21T09:37:52.2057936Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2058026Z               "line": 3834
2026-06-21T09:37:52.2058106Z             },
2026-06-21T09:37:52.2058188Z             {
2026-06-21T09:37:52.2058298Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2058374Z               "line": 4023
2026-06-21T09:37:52.2058459Z             },
2026-06-21T09:37:52.2058636Z             {
2026-06-21T09:37:52.2058741Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2058823Z               "line": 4093
2026-06-21T09:37:52.2058908Z             },
2026-06-21T09:37:52.2059111Z             {
2026-06-21T09:37:52.2059207Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2059301Z               "line": 4317
2026-06-21T09:37:52.2059371Z             },
2026-06-21T09:37:52.2059457Z             {
2026-06-21T09:37:52.2059549Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2059634Z               "line": 4961
2026-06-21T09:37:52.2059724Z             },
2026-06-21T09:37:52.2059801Z             {
2026-06-21T09:37:52.2059920Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.2060001Z               "line": 418
2026-06-21T09:37:52.2060082Z             }
2026-06-21T09:37:52.2060164Z           ]
2026-06-21T09:37:52.2060249Z         },
2026-06-21T09:37:52.2060335Z         "int": {
2026-06-21T09:37:52.2060421Z           "complete": false,
2026-06-21T09:37:52.2060507Z           "evidence": []
2026-06-21T09:37:52.2060588Z         },
2026-06-21T09:37:52.2060664Z         "unit": {
2026-06-21T09:37:52.2060755Z           "complete": true,
2026-06-21T09:37:52.2060841Z           "evidence": [
2026-06-21T09:37:52.2060922Z             {
2026-06-21T09:37:52.2061055Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2061137Z               "line": 1584
2026-06-21T09:37:52.2061217Z             },
2026-06-21T09:37:52.2061298Z             {
2026-06-21T09:37:52.2061390Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2061475Z               "line": 9964
2026-06-21T09:37:52.2061560Z             },
2026-06-21T09:37:52.2061636Z             {
2026-06-21T09:37:52.2061743Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2061823Z               "line": 10134
2026-06-21T09:37:52.2061898Z             },
2026-06-21T09:37:52.2061969Z             {
2026-06-21T09:37:52.2062069Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2062149Z               "line": 10141
2026-06-21T09:37:52.2062225Z             },
2026-06-21T09:37:52.2062310Z             {
2026-06-21T09:37:52.2062411Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2062502Z               "line": 10194
2026-06-21T09:37:52.2062586Z             },
2026-06-21T09:37:52.2062668Z             {
2026-06-21T09:37:52.2062773Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2062854Z               "line": 10211
2026-06-21T09:37:52.2062934Z             },
2026-06-21T09:37:52.2063012Z             {
2026-06-21T09:37:52.2063116Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2063192Z               "line": 10241
2026-06-21T09:37:52.2063278Z             },
2026-06-21T09:37:52.2063355Z             {
2026-06-21T09:37:52.2063454Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2063545Z               "line": 10357
2026-06-21T09:37:52.2063617Z             },
2026-06-21T09:37:52.2063703Z             {
2026-06-21T09:37:52.2063807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2063893Z               "line": 10508
2026-06-21T09:37:52.2063980Z             }
2026-06-21T09:37:52.2064066Z           ]
2026-06-21T09:37:52.2064151Z         }
2026-06-21T09:37:52.2064232Z       }
2026-06-21T09:37:52.2067718Z     },
2026-06-21T09:37:52.2067813Z     {
2026-06-21T09:37:52.2067919Z       "id": "REQ-SUBNET-2",
2026-06-21T09:37:52.2068163Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T09:37:52.2068248Z       "requiredStages": [
2026-06-21T09:37:52.2068333Z         "impl",
2026-06-21T09:37:52.2068424Z         "unit",
2026-06-21T09:37:52.2068505Z         "int"
2026-06-21T09:37:52.2068586Z       ],
2026-06-21T09:37:52.2068662Z       "stages": {
2026-06-21T09:37:52.2068744Z         "doc": {
2026-06-21T09:37:52.2068825Z           "complete": true,
2026-06-21T09:37:52.2068915Z           "evidence": [
2026-06-21T09:37:52.2069229Z             {
2026-06-21T09:37:52.2069397Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T09:37:52.2069492Z               "line": 60
2026-06-21T09:37:52.2069572Z             }
2026-06-21T09:37:52.2069643Z           ]
2026-06-21T09:37:52.2069724Z         },
2026-06-21T09:37:52.2069814Z         "impl": {
2026-06-21T09:37:52.2069899Z           "complete": true,
2026-06-21T09:37:52.2069979Z           "evidence": [
2026-06-21T09:37:52.2070066Z             {
2026-06-21T09:37:52.2070184Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.2070261Z               "line": 886
2026-06-21T09:37:52.2070333Z             },
2026-06-21T09:37:52.2070409Z             {
2026-06-21T09:37:52.2070523Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.2070608Z               "line": 2122
2026-06-21T09:37:52.2070686Z             },
2026-06-21T09:37:52.2070762Z             {
2026-06-21T09:37:52.2070880Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.2070962Z               "line": 683
2026-06-21T09:37:52.2071044Z             },
2026-06-21T09:37:52.2071124Z             {
2026-06-21T09:37:52.2071238Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T09:37:52.2071320Z               "line": 867
2026-06-21T09:37:52.2071410Z             },
2026-06-21T09:37:52.2071491Z             {
2026-06-21T09:37:52.2071611Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2071687Z               "line": 26
2026-06-21T09:37:52.2071768Z             },
2026-06-21T09:37:52.2071853Z             {
2026-06-21T09:37:52.2071964Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2072049Z               "line": 60
2026-06-21T09:37:52.2072134Z             },
2026-06-21T09:37:52.2072211Z             {
2026-06-21T09:37:52.2072322Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2072397Z               "line": 168
2026-06-21T09:37:52.2072482Z             },
2026-06-21T09:37:52.2072567Z             {
2026-06-21T09:37:52.2072672Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2072761Z               "line": 295
2026-06-21T09:37:52.2072827Z             },
2026-06-21T09:37:52.2072913Z             {
2026-06-21T09:37:52.2073024Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2073109Z               "line": 417
2026-06-21T09:37:52.2073190Z             },
2026-06-21T09:37:52.2073267Z             {
2026-06-21T09:37:52.2073391Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T09:37:52.2073475Z               "line": 252
2026-06-21T09:37:52.2073558Z             },
2026-06-21T09:37:52.2073639Z             {
2026-06-21T09:37:52.2073738Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2073819Z               "line": 3755
2026-06-21T09:37:52.2073901Z             },
2026-06-21T09:37:52.2073982Z             {
2026-06-21T09:37:52.2074087Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2074168Z               "line": 4256
2026-06-21T09:37:52.2074263Z             },
2026-06-21T09:37:52.2074339Z             {
2026-06-21T09:37:52.2074444Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2074527Z               "line": 4892
2026-06-21T09:37:52.2074735Z             }
2026-06-21T09:37:52.2074802Z           ]
2026-06-21T09:37:52.2074879Z         },
2026-06-21T09:37:52.2074955Z         "int": {
2026-06-21T09:37:52.2075039Z           "complete": true,
2026-06-21T09:37:52.2075129Z           "evidence": [
2026-06-21T09:37:52.2075210Z             {
2026-06-21T09:37:52.2075333Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T09:37:52.2075408Z               "line": 22
2026-06-21T09:37:52.2075485Z             },
2026-06-21T09:37:52.2075571Z             {
2026-06-21T09:37:52.2075680Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.2075771Z               "line": 645
2026-06-21T09:37:52.2075914Z             },
2026-06-21T09:37:52.2076004Z             {
2026-06-21T09:37:52.2076120Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.2076210Z               "line": 887
2026-06-21T09:37:52.2076296Z             }
2026-06-21T09:37:52.2076381Z           ]
2026-06-21T09:37:52.2076473Z         },
2026-06-21T09:37:52.2076558Z         "unit": {
2026-06-21T09:37:52.2076648Z           "complete": true,
2026-06-21T09:37:52.2076734Z           "evidence": [
2026-06-21T09:37:52.2076821Z             {
2026-06-21T09:37:52.2076935Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2077020Z               "line": 586
2026-06-21T09:37:52.2077107Z             },
2026-06-21T09:37:52.2077173Z             {
2026-06-21T09:37:52.2077273Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2077359Z               "line": 10004
2026-06-21T09:37:52.2077432Z             },
2026-06-21T09:37:52.2077507Z             {
2026-06-21T09:37:52.2077607Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2077689Z               "line": 10715
2026-06-21T09:37:52.2077770Z             }
2026-06-21T09:37:52.2077850Z           ]
2026-06-21T09:37:52.2077930Z         }
2026-06-21T09:37:52.2078011Z       }
2026-06-21T09:37:52.2078093Z     },
2026-06-21T09:37:52.2078170Z     {
2026-06-21T09:37:52.2078268Z       "id": "REQ-SUBNET-3",
2026-06-21T09:37:52.2078522Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T09:37:52.2078612Z       "requiredStages": [
2026-06-21T09:37:52.2078694Z         "impl",
2026-06-21T09:37:52.2078774Z         "unit"
2026-06-21T09:37:52.2078855Z       ],
2026-06-21T09:37:52.2078936Z       "stages": {
2026-06-21T09:37:52.2079108Z         "doc": {
2026-06-21T09:37:52.2079212Z           "complete": false,
2026-06-21T09:37:52.2079294Z           "evidence": []
2026-06-21T09:37:52.2079371Z         },
2026-06-21T09:37:52.2079475Z         "impl": {
2026-06-21T09:37:52.2079570Z           "complete": true,
2026-06-21T09:37:52.2079652Z           "evidence": [
2026-06-21T09:37:52.2079737Z             {
2026-06-21T09:37:52.2079856Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2079943Z               "line": 152
2026-06-21T09:37:52.2080025Z             },
2026-06-21T09:37:52.2080108Z             {
2026-06-21T09:37:52.2080236Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2080318Z               "line": 299
2026-06-21T09:37:52.2080402Z             },
2026-06-21T09:37:52.2080478Z             {
2026-06-21T09:37:52.2080592Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2080674Z               "line": 443
2026-06-21T09:37:52.2080759Z             },
2026-06-21T09:37:52.2080844Z             {
2026-06-21T09:37:52.2080960Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2081046Z               "line": 532
2026-06-21T09:37:52.2081131Z             },
2026-06-21T09:37:52.2081212Z             {
2026-06-21T09:37:52.2081327Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2081407Z               "line": 125
2026-06-21T09:37:52.2081493Z             },
2026-06-21T09:37:52.2081566Z             {
2026-06-21T09:37:52.2081684Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2081861Z               "line": 253
2026-06-21T09:37:52.2081951Z             },
2026-06-21T09:37:52.2082028Z             {
2026-06-21T09:37:52.2082141Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2082234Z               "line": 264
2026-06-21T09:37:52.2082308Z             },
2026-06-21T09:37:52.2082399Z             {
2026-06-21T09:37:52.2082510Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2082600Z               "line": 285
2026-06-21T09:37:52.2082685Z             },
2026-06-21T09:37:52.2082762Z             {
2026-06-21T09:37:52.2082878Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2083079Z               "line": 621
2026-06-21T09:37:52.2083166Z             },
2026-06-21T09:37:52.2083237Z             {
2026-06-21T09:37:52.2083355Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2083445Z               "line": 680
2026-06-21T09:37:52.2083531Z             },
2026-06-21T09:37:52.2083617Z             {
2026-06-21T09:37:52.2083735Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.2083827Z               "line": 61
2026-06-21T09:37:52.2083908Z             },
2026-06-21T09:37:52.2083998Z             {
2026-06-21T09:37:52.2084113Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.2084194Z               "line": 90
2026-06-21T09:37:52.2084270Z             },
2026-06-21T09:37:52.2084351Z             {
2026-06-21T09:37:52.2084466Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.2084542Z               "line": 125
2026-06-21T09:37:52.2084632Z             },
2026-06-21T09:37:52.2084713Z             {
2026-06-21T09:37:52.2084828Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T09:37:52.2084909Z               "line": 9
2026-06-21T09:37:52.2084990Z             },
2026-06-21T09:37:52.2085067Z             {
2026-06-21T09:37:52.2085176Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2085256Z               "line": 4093
2026-06-21T09:37:52.2085343Z             },
2026-06-21T09:37:52.2085416Z             {
2026-06-21T09:37:52.2085519Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.2085599Z               "line": 445
2026-06-21T09:37:52.2085680Z             }
2026-06-21T09:37:52.2085756Z           ]
2026-06-21T09:37:52.2085836Z         },
2026-06-21T09:37:52.2085925Z         "int": {
2026-06-21T09:37:52.2086007Z           "complete": false,
2026-06-21T09:37:52.2086088Z           "evidence": []
2026-06-21T09:37:52.2086165Z         },
2026-06-21T09:37:52.2086254Z         "unit": {
2026-06-21T09:37:52.2086340Z           "complete": true,
2026-06-21T09:37:52.2086432Z           "evidence": [
2026-06-21T09:37:52.2086513Z             {
2026-06-21T09:37:52.2086631Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2086723Z               "line": 1356
2026-06-21T09:37:52.2086808Z             },
2026-06-21T09:37:52.2086894Z             {
2026-06-21T09:37:52.2087009Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2087099Z               "line": 1713
2026-06-21T09:37:52.2087180Z             },
2026-06-21T09:37:52.2087246Z             {
2026-06-21T09:37:52.2087367Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.2087452Z               "line": 892
2026-06-21T09:37:52.2087537Z             },
2026-06-21T09:37:52.2087619Z             {
2026-06-21T09:37:52.2087733Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2087819Z               "line": 991
2026-06-21T09:37:52.2087895Z             },
2026-06-21T09:37:52.2087977Z             {
2026-06-21T09:37:52.2088090Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2088181Z               "line": 1041
2026-06-21T09:37:52.2088264Z             },
2026-06-21T09:37:52.2088345Z             {
2026-06-21T09:37:52.2088461Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2088619Z               "line": 1100
2026-06-21T09:37:52.2088701Z             },
2026-06-21T09:37:52.2088786Z             {
2026-06-21T09:37:52.2088895Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T09:37:52.2089082Z               "line": 234
2026-06-21T09:37:52.2089162Z             },
2026-06-21T09:37:52.2089244Z             {
2026-06-21T09:37:52.2089358Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T09:37:52.2089448Z               "line": 49
2026-06-21T09:37:52.2089525Z             },
2026-06-21T09:37:52.2089602Z             {
2026-06-21T09:37:52.2089811Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2089893Z               "line": 10357
2026-06-21T09:37:52.2089983Z             },
2026-06-21T09:37:52.2090064Z             {
2026-06-21T09:37:52.2090164Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2090232Z               "line": 10463
2026-06-21T09:37:52.2090326Z             },
2026-06-21T09:37:52.2090411Z             {
2026-06-21T09:37:52.2090508Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2090589Z               "line": 10681
2026-06-21T09:37:52.2090668Z             }
2026-06-21T09:37:52.2090749Z           ]
2026-06-21T09:37:52.2090826Z         }
2026-06-21T09:37:52.2090916Z       }
2026-06-21T09:37:52.2091000Z     },
2026-06-21T09:37:52.2091076Z     {
2026-06-21T09:37:52.2091171Z       "id": "REQ-SUBNET-4",
2026-06-21T09:37:52.2091443Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T09:37:52.2091535Z       "requiredStages": [
2026-06-21T09:37:52.2091620Z         "impl",
2026-06-21T09:37:52.2091705Z         "unit"
2026-06-21T09:37:52.2091787Z       ],
2026-06-21T09:37:52.2091868Z       "stages": {
2026-06-21T09:37:52.2091949Z         "doc": {
2026-06-21T09:37:52.2092029Z           "complete": true,
2026-06-21T09:37:52.2092121Z           "evidence": [
2026-06-21T09:37:52.2092206Z             {
2026-06-21T09:37:52.2092363Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T09:37:52.2092445Z               "line": 60
2026-06-21T09:37:52.2092526Z             }
2026-06-21T09:37:52.2092611Z           ]
2026-06-21T09:37:52.2092688Z         },
2026-06-21T09:37:52.2092765Z         "impl": {
2026-06-21T09:37:52.2092845Z           "complete": true,
2026-06-21T09:37:52.2092931Z           "evidence": [
2026-06-21T09:37:52.2093017Z             {
2026-06-21T09:37:52.2093114Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2093202Z               "line": 3399
2026-06-21T09:37:52.2093288Z             },
2026-06-21T09:37:52.2093366Z             {
2026-06-21T09:37:52.2093466Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2093550Z               "line": 4859
2026-06-21T09:37:52.2093630Z             },
2026-06-21T09:37:52.2093702Z             {
2026-06-21T09:37:52.2093802Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2093895Z               "line": 4892
2026-06-21T09:37:52.2093976Z             }
2026-06-21T09:37:52.2094058Z           ]
2026-06-21T09:37:52.2094139Z         },
2026-06-21T09:37:52.2094224Z         "int": {
2026-06-21T09:37:52.2094300Z           "complete": false,
2026-06-21T09:37:52.2094392Z           "evidence": []
2026-06-21T09:37:52.2094468Z         },
2026-06-21T09:37:52.2094548Z         "unit": {
2026-06-21T09:37:52.2094629Z           "complete": true,
2026-06-21T09:37:52.2094721Z           "evidence": [
2026-06-21T09:37:52.2094807Z             {
2026-06-21T09:37:52.2094892Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2094973Z               "line": 10120
2026-06-21T09:37:52.2095059Z             },
2026-06-21T09:37:52.2095145Z             {
2026-06-21T09:37:52.2095231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2095312Z               "line": 10194
2026-06-21T09:37:52.2095393Z             }
2026-06-21T09:37:52.2095593Z           ]
2026-06-21T09:37:52.2095680Z         }
2026-06-21T09:37:52.2095760Z       }
2026-06-21T09:37:52.2095846Z     },
2026-06-21T09:37:52.2095923Z     {
2026-06-21T09:37:52.2096018Z       "id": "REQ-SUBNET-5",
2026-06-21T09:37:52.2097220Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T09:37:52.2097306Z       "requiredStages": [
2026-06-21T09:37:52.2097473Z         "impl",
2026-06-21T09:37:52.2097550Z         "unit",
2026-06-21T09:37:52.2097635Z         "int"
2026-06-21T09:37:52.2097716Z       ],
2026-06-21T09:37:52.2097797Z       "stages": {
2026-06-21T09:37:52.2097884Z         "doc": {
2026-06-21T09:37:52.2097960Z           "complete": false,
2026-06-21T09:37:52.2098065Z           "evidence": []
2026-06-21T09:37:52.2098136Z         },
2026-06-21T09:37:52.2098223Z         "impl": {
2026-06-21T09:37:52.2098317Z           "complete": true,
2026-06-21T09:37:52.2098403Z           "evidence": [
2026-06-21T09:37:52.2098485Z             {
2026-06-21T09:37:52.2098608Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T09:37:52.2098703Z               "line": 128
2026-06-21T09:37:52.2098785Z             },
2026-06-21T09:37:52.2098867Z             {
2026-06-21T09:37:52.2099078Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T09:37:52.2099165Z               "line": 413
2026-06-21T09:37:52.2099247Z             },
2026-06-21T09:37:52.2099332Z             {
2026-06-21T09:37:52.2099455Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2099538Z               "line": 74
2026-06-21T09:37:52.2099619Z             },
2026-06-21T09:37:52.2099703Z             {
2026-06-21T09:37:52.2099814Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.2099914Z               "line": 332
2026-06-21T09:37:52.2099994Z             },
2026-06-21T09:37:52.2100076Z             {
2026-06-21T09:37:52.2100186Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.2100276Z               "line": 621
2026-06-21T09:37:52.2100356Z             },
2026-06-21T09:37:52.2100429Z             {
2026-06-21T09:37:52.2100557Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:37:52.2100638Z               "line": 31
2026-06-21T09:37:52.2100719Z             },
2026-06-21T09:37:52.2100806Z             {
2026-06-21T09:37:52.2100914Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:37:52.2101010Z               "line": 50
2026-06-21T09:37:52.2101083Z             },
2026-06-21T09:37:52.2101163Z             {
2026-06-21T09:37:52.2101271Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:37:52.2101361Z               "line": 69
2026-06-21T09:37:52.2101457Z             },
2026-06-21T09:37:52.2101532Z             {
2026-06-21T09:37:52.2101650Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:37:52.2101727Z               "line": 113
2026-06-21T09:37:52.2101813Z             },
2026-06-21T09:37:52.2101894Z             {
2026-06-21T09:37:52.2102017Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T09:37:52.2102104Z               "line": 25
2026-06-21T09:37:52.2102185Z             },
2026-06-21T09:37:52.2102265Z             {
2026-06-21T09:37:52.2102371Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T09:37:52.2102456Z               "line": 34
2026-06-21T09:37:52.2102537Z             },
2026-06-21T09:37:52.2102618Z             {
2026-06-21T09:37:52.2102734Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:37:52.2102814Z               "line": 17
2026-06-21T09:37:52.2102899Z             },
2026-06-21T09:37:52.2102976Z             {
2026-06-21T09:37:52.2103200Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2103276Z               "line": 4817
2026-06-21T09:37:52.2103363Z             },
2026-06-21T09:37:52.2103448Z             {
2026-06-21T09:37:52.2103557Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T09:37:52.2103635Z               "line": 419
2026-06-21T09:37:52.2103712Z             }
2026-06-21T09:37:52.2103795Z           ]
2026-06-21T09:37:52.2103872Z         },
2026-06-21T09:37:52.2103964Z         "int": {
2026-06-21T09:37:52.2104054Z           "complete": true,
2026-06-21T09:37:52.2104129Z           "evidence": [
2026-06-21T09:37:52.2104214Z             {
2026-06-21T09:37:52.2104334Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.2104517Z               "line": 821
2026-06-21T09:37:52.2104594Z             }
2026-06-21T09:37:52.2104671Z           ]
2026-06-21T09:37:52.2104751Z         },
2026-06-21T09:37:52.2104832Z         "unit": {
2026-06-21T09:37:52.2104918Z           "complete": true,
2026-06-21T09:37:52.2105009Z           "evidence": [
2026-06-21T09:37:52.2105090Z             {
2026-06-21T09:37:52.2105189Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.2105277Z               "line": 341
2026-06-21T09:37:52.2105362Z             },
2026-06-21T09:37:52.2105437Z             {
2026-06-21T09:37:52.2105562Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T09:37:52.2105643Z               "line": 1115
2026-06-21T09:37:52.2105729Z             },
2026-06-21T09:37:52.2105800Z             {
2026-06-21T09:37:52.2105926Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T09:37:52.2106015Z               "line": 151
2026-06-21T09:37:52.2106100Z             },
2026-06-21T09:37:52.2106187Z             {
2026-06-21T09:37:52.2106306Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T09:37:52.2106396Z               "line": 61
2026-06-21T09:37:52.2106468Z             },
2026-06-21T09:37:52.2106560Z             {
2026-06-21T09:37:52.2106696Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:37:52.2106786Z               "line": 111
2026-06-21T09:37:52.2106863Z             },
2026-06-21T09:37:52.2106947Z             {
2026-06-21T09:37:52.2107070Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:37:52.2107160Z               "line": 138
2026-06-21T09:37:52.2107242Z             },
2026-06-21T09:37:52.2107323Z             {
2026-06-21T09:37:52.2107437Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T09:37:52.2107524Z               "line": 148
2026-06-21T09:37:52.2107595Z             },
2026-06-21T09:37:52.2107680Z             {
2026-06-21T09:37:52.2107781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2107866Z               "line": 10021
2026-06-21T09:37:52.2107943Z             }
2026-06-21T09:37:52.2108014Z           ]
2026-06-21T09:37:52.2108096Z         }
2026-06-21T09:37:52.2108177Z       }
2026-06-21T09:37:52.2108257Z     },
2026-06-21T09:37:52.2108343Z     {
2026-06-21T09:37:52.2108424Z       "id": "REQ-SUBNET-6",
2026-06-21T09:37:52.2109173Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T09:37:52.2109258Z       "requiredStages": [
2026-06-21T09:37:52.2109345Z         "impl",
2026-06-21T09:37:52.2109422Z         "unit"
2026-06-21T09:37:52.2109507Z       ],
2026-06-21T09:37:52.2109587Z       "stages": {
2026-06-21T09:37:52.2109667Z         "doc": {
2026-06-21T09:37:52.2109768Z           "complete": false,
2026-06-21T09:37:52.2109850Z           "evidence": []
2026-06-21T09:37:52.2109930Z         },
2026-06-21T09:37:52.2110011Z         "impl": {
2026-06-21T09:37:52.2110098Z           "complete": true,
2026-06-21T09:37:52.2110183Z           "evidence": [
2026-06-21T09:37:52.2110254Z             {
2026-06-21T09:37:52.2110483Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2110569Z               "line": 254
2026-06-21T09:37:52.2110645Z             },
2026-06-21T09:37:52.2110722Z             {
2026-06-21T09:37:52.2110826Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2110916Z               "line": 4475
2026-06-21T09:37:52.2110989Z             },
2026-06-21T09:37:52.2111070Z             {
2026-06-21T09:37:52.2111160Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2111245Z               "line": 4492
2026-06-21T09:37:52.2111324Z             },
2026-06-21T09:37:52.2111409Z             {
2026-06-21T09:37:52.2111638Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2111723Z               "line": 4545
2026-06-21T09:37:52.2111808Z             },
2026-06-21T09:37:52.2111884Z             {
2026-06-21T09:37:52.2111979Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2112069Z               "line": 4568
2026-06-21T09:37:52.2112153Z             }
2026-06-21T09:37:52.2112234Z           ]
2026-06-21T09:37:52.2112301Z         },
2026-06-21T09:37:52.2112383Z         "int": {
2026-06-21T09:37:52.2112468Z           "complete": false,
2026-06-21T09:37:52.2112549Z           "evidence": []
2026-06-21T09:37:52.2112630Z         },
2026-06-21T09:37:52.2112716Z         "unit": {
2026-06-21T09:37:52.2112806Z           "complete": true,
2026-06-21T09:37:52.2112887Z           "evidence": [
2026-06-21T09:37:52.2112970Z             {
2026-06-21T09:37:52.2113065Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2113144Z               "line": 10035
2026-06-21T09:37:52.2113227Z             },
2026-06-21T09:37:52.2113308Z             {
2026-06-21T09:37:52.2113408Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2113483Z               "line": 10068
2026-06-21T09:37:52.2113566Z             },
2026-06-21T09:37:52.2113642Z             {
2026-06-21T09:37:52.2113741Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2113837Z               "line": 10077
2026-06-21T09:37:52.2113914Z             }
2026-06-21T09:37:52.2113989Z           ]
2026-06-21T09:37:52.2114056Z         }
2026-06-21T09:37:52.2114142Z       }
2026-06-21T09:37:52.2114219Z     },
2026-06-21T09:37:52.2114304Z     {
2026-06-21T09:37:52.2114395Z       "id": "REQ-SUBNET-7",
2026-06-21T09:37:52.2116016Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T09:37:52.2116127Z       "requiredStages": [
2026-06-21T09:37:52.2116213Z         "impl",
2026-06-21T09:37:52.2116308Z         "unit"
2026-06-21T09:37:52.2116389Z       ],
2026-06-21T09:37:52.2116471Z       "stages": {
2026-06-21T09:37:52.2116560Z         "doc": {
2026-06-21T09:37:52.2116646Z           "complete": false,
2026-06-21T09:37:52.2116743Z           "evidence": []
2026-06-21T09:37:52.2116819Z         },
2026-06-21T09:37:52.2116903Z         "impl": {
2026-06-21T09:37:52.2116990Z           "complete": true,
2026-06-21T09:37:52.2117067Z           "evidence": [
2026-06-21T09:37:52.2117144Z             {
2026-06-21T09:37:52.2117261Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T09:37:52.2117346Z               "line": 17
2026-06-21T09:37:52.2117427Z             },
2026-06-21T09:37:52.2117512Z             {
2026-06-21T09:37:52.2117630Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2117720Z               "line": 103
2026-06-21T09:37:52.2117807Z             },
2026-06-21T09:37:52.2117887Z             {
2026-06-21T09:37:52.2118089Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T09:37:52.2118174Z               "line": 312
2026-06-21T09:37:52.2118259Z             },
2026-06-21T09:37:52.2118336Z             {
2026-06-21T09:37:52.2118465Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T09:37:52.2118550Z               "line": 131
2026-06-21T09:37:52.2118626Z             },
2026-06-21T09:37:52.2118709Z             {
2026-06-21T09:37:52.2118837Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2118927Z               "line": 160
2026-06-21T09:37:52.2119094Z             },
2026-06-21T09:37:52.2119170Z             {
2026-06-21T09:37:52.2119404Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2119514Z               "line": 447
2026-06-21T09:37:52.2119600Z             },
2026-06-21T09:37:52.2119677Z             {
2026-06-21T09:37:52.2119794Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2119881Z               "line": 670
2026-06-21T09:37:52.2119963Z             },
2026-06-21T09:37:52.2120043Z             {
2026-06-21T09:37:52.2120161Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2120242Z               "line": 710
2026-06-21T09:37:52.2120324Z             },
2026-06-21T09:37:52.2120400Z             {
2026-06-21T09:37:52.2120523Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2120600Z               "line": 766
2026-06-21T09:37:52.2120700Z             },
2026-06-21T09:37:52.2120776Z             {
2026-06-21T09:37:52.2120900Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.2120987Z               "line": 136
2026-06-21T09:37:52.2121068Z             },
2026-06-21T09:37:52.2121157Z             {
2026-06-21T09:37:52.2121259Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2121344Z               "line": 139
2026-06-21T09:37:52.2121420Z             }
2026-06-21T09:37:52.2121510Z           ]
2026-06-21T09:37:52.2121593Z         },
2026-06-21T09:37:52.2121673Z         "int": {
2026-06-21T09:37:52.2121763Z           "complete": false,
2026-06-21T09:37:52.2121845Z           "evidence": []
2026-06-21T09:37:52.2121926Z         },
2026-06-21T09:37:52.2122002Z         "unit": {
2026-06-21T09:37:52.2122092Z           "complete": true,
2026-06-21T09:37:52.2122183Z           "evidence": [
2026-06-21T09:37:52.2122265Z             {
2026-06-21T09:37:52.2122382Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T09:37:52.2122463Z               "line": 136
2026-06-21T09:37:52.2122549Z             },
2026-06-21T09:37:52.2122620Z             {
2026-06-21T09:37:52.2122742Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T09:37:52.2122823Z               "line": 156
2026-06-21T09:37:52.2122905Z             },
2026-06-21T09:37:52.2122985Z             {
2026-06-21T09:37:52.2123104Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2123191Z               "line": 987
2026-06-21T09:37:52.2123272Z             },
2026-06-21T09:37:52.2123357Z             {
2026-06-21T09:37:52.2123477Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T09:37:52.2123558Z               "line": 1009
2026-06-21T09:37:52.2123643Z             },
2026-06-21T09:37:52.2123714Z             {
2026-06-21T09:37:52.2123835Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T09:37:52.2123920Z               "line": 1419
2026-06-21T09:37:52.2124010Z             },
2026-06-21T09:37:52.2124087Z             {
2026-06-21T09:37:52.2124192Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T09:37:52.2124278Z               "line": 1036
2026-06-21T09:37:52.2124358Z             }
2026-06-21T09:37:52.2124446Z           ]
2026-06-21T09:37:52.2124535Z         }
2026-06-21T09:37:52.2124611Z       }
2026-06-21T09:37:52.2124702Z     },
2026-06-21T09:37:52.2124779Z     {
2026-06-21T09:37:52.2124869Z       "id": "REQ-SUBNET-8",
2026-06-21T09:37:52.2126087Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T09:37:52.2126192Z       "requiredStages": [
2026-06-21T09:37:52.2126281Z         "impl",
2026-06-21T09:37:52.2126363Z         "unit"
2026-06-21T09:37:52.2126449Z       ],
2026-06-21T09:37:52.2126530Z       "stages": {
2026-06-21T09:37:52.2126688Z         "doc": {
2026-06-21T09:37:52.2126764Z           "complete": false,
2026-06-21T09:37:52.2126845Z           "evidence": []
2026-06-21T09:37:52.2126925Z         },
2026-06-21T09:37:52.2126998Z         "impl": {
2026-06-21T09:37:52.2127084Z           "complete": true,
2026-06-21T09:37:52.2127163Z           "evidence": [
2026-06-21T09:37:52.2127259Z             {
2026-06-21T09:37:52.2127351Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2127431Z               "line": 3835
2026-06-21T09:37:52.2127512Z             },
2026-06-21T09:37:52.2127593Z             {
2026-06-21T09:37:52.2127699Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2127783Z               "line": 3864
2026-06-21T09:37:52.2127864Z             },
2026-06-21T09:37:52.2127950Z             {
2026-06-21T09:37:52.2128045Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2128138Z               "line": 3881
2026-06-21T09:37:52.2128218Z             },
2026-06-21T09:37:52.2128300Z             {
2026-06-21T09:37:52.2128401Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2128490Z               "line": 3904
2026-06-21T09:37:52.2128572Z             },
2026-06-21T09:37:52.2128654Z             {
2026-06-21T09:37:52.2128753Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2128834Z               "line": 4318
2026-06-21T09:37:52.2128920Z             }
2026-06-21T09:37:52.2129087Z           ]
2026-06-21T09:37:52.2129167Z         },
2026-06-21T09:37:52.2129259Z         "int": {
2026-06-21T09:37:52.2129339Z           "complete": false,
2026-06-21T09:37:52.2129448Z           "evidence": []
2026-06-21T09:37:52.2129530Z         },
2026-06-21T09:37:52.2129617Z         "unit": {
2026-06-21T09:37:52.2129697Z           "complete": true,
2026-06-21T09:37:52.2129792Z           "evidence": [
2026-06-21T09:37:52.2129874Z             {
2026-06-21T09:37:52.2129969Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2130050Z               "line": 10225
2026-06-21T09:37:52.2130136Z             },
2026-06-21T09:37:52.2130218Z             {
2026-06-21T09:37:52.2130317Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2130393Z               "line": 10241
2026-06-21T09:37:52.2130475Z             }
2026-06-21T09:37:52.2130552Z           ]
2026-06-21T09:37:52.2130632Z         }
2026-06-21T09:37:52.2130717Z       }
2026-06-21T09:37:52.2130797Z     },
2026-06-21T09:37:52.2130874Z     {
2026-06-21T09:37:52.2130965Z       "id": "REQ-TERM-1",
2026-06-21T09:37:52.2131121Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T09:37:52.2131213Z       "requiredStages": [
2026-06-21T09:37:52.2131294Z         "impl",
2026-06-21T09:37:52.2131374Z         "unit"
2026-06-21T09:37:52.2131456Z       ],
2026-06-21T09:37:52.2131528Z       "stages": {
2026-06-21T09:37:52.2131609Z         "doc": {
2026-06-21T09:37:52.2131689Z           "complete": false,
2026-06-21T09:37:52.2131780Z           "evidence": []
2026-06-21T09:37:52.2131861Z         },
2026-06-21T09:37:52.2131942Z         "impl": {
2026-06-21T09:37:52.2135157Z           "complete": true,
2026-06-21T09:37:52.2135262Z           "evidence": [
2026-06-21T09:37:52.2135354Z             {
2026-06-21T09:37:52.2135476Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:37:52.2135567Z               "line": 59
2026-06-21T09:37:52.2135781Z             },
2026-06-21T09:37:52.2135866Z             {
2026-06-21T09:37:52.2135981Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T09:37:52.2136061Z               "line": 234
2026-06-21T09:37:52.2136150Z             },
2026-06-21T09:37:52.2136231Z             {
2026-06-21T09:37:52.2136361Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T09:37:52.2136451Z               "line": 100
2026-06-21T09:37:52.2136531Z             }
2026-06-21T09:37:52.2136618Z           ]
2026-06-21T09:37:52.2136699Z         },
2026-06-21T09:37:52.2136784Z         "int": {
2026-06-21T09:37:52.2136880Z           "complete": false,
2026-06-21T09:37:52.2137071Z           "evidence": []
2026-06-21T09:37:52.2137156Z         },
2026-06-21T09:37:52.2137238Z         "unit": {
2026-06-21T09:37:52.2137333Z           "complete": true,
2026-06-21T09:37:52.2137419Z           "evidence": [
2026-06-21T09:37:52.2137505Z             {
2026-06-21T09:37:52.2137615Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T09:37:52.2137723Z               "line": 24
2026-06-21T09:37:52.2137810Z             },
2026-06-21T09:37:52.2137883Z             {
2026-06-21T09:37:52.2137996Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T09:37:52.2138082Z               "line": 56
2026-06-21T09:37:52.2138168Z             }
2026-06-21T09:37:52.2138245Z           ]
2026-06-21T09:37:52.2138325Z         }
2026-06-21T09:37:52.2138405Z       }
2026-06-21T09:37:52.2138485Z     },
2026-06-21T09:37:52.2138567Z     {
2026-06-21T09:37:52.2138647Z       "id": "REQ-TERM-2",
2026-06-21T09:37:52.2138827Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T09:37:52.2138932Z       "requiredStages": [
2026-06-21T09:37:52.2139103Z         "impl",
2026-06-21T09:37:52.2139190Z         "unit"
2026-06-21T09:37:52.2139261Z       ],
2026-06-21T09:37:52.2139356Z       "stages": {
2026-06-21T09:37:52.2139432Z         "doc": {
2026-06-21T09:37:52.2139524Z           "complete": false,
2026-06-21T09:37:52.2139609Z           "evidence": []
2026-06-21T09:37:52.2139699Z         },
2026-06-21T09:37:52.2139776Z         "impl": {
2026-06-21T09:37:52.2139862Z           "complete": true,
2026-06-21T09:37:52.2139947Z           "evidence": [
2026-06-21T09:37:52.2140023Z             {
2026-06-21T09:37:52.2140149Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T09:37:52.2140229Z               "line": 117
2026-06-21T09:37:52.2140305Z             },
2026-06-21T09:37:52.2140391Z             {
2026-06-21T09:37:52.2140497Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T09:37:52.2140585Z               "line": 127
2026-06-21T09:37:52.2140672Z             }
2026-06-21T09:37:52.2140750Z           ]
2026-06-21T09:37:52.2140831Z         },
2026-06-21T09:37:52.2140914Z         "int": {
2026-06-21T09:37:52.2140996Z           "complete": false,
2026-06-21T09:37:52.2141079Z           "evidence": []
2026-06-21T09:37:52.2141164Z         },
2026-06-21T09:37:52.2141243Z         "unit": {
2026-06-21T09:37:52.2141338Z           "complete": true,
2026-06-21T09:37:52.2141420Z           "evidence": [
2026-06-21T09:37:52.2141507Z             {
2026-06-21T09:37:52.2141634Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T09:37:52.2141715Z               "line": 46
2026-06-21T09:37:52.2141802Z             },
2026-06-21T09:37:52.2141882Z             {
2026-06-21T09:37:52.2142001Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T09:37:52.2142088Z               "line": 77
2026-06-21T09:37:52.2142169Z             }
2026-06-21T09:37:52.2142254Z           ]
2026-06-21T09:37:52.2142331Z         }
2026-06-21T09:37:52.2142417Z       }
2026-06-21T09:37:52.2142497Z     },
2026-06-21T09:37:52.2142583Z     {
2026-06-21T09:37:52.2142670Z       "id": "REQ-TERM-3",
2026-06-21T09:37:52.2142817Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T09:37:52.2142907Z       "requiredStages": [
2026-06-21T09:37:52.2142989Z         "impl",
2026-06-21T09:37:52.2143222Z         "unit"
2026-06-21T09:37:52.2143304Z       ],
2026-06-21T09:37:52.2143390Z       "stages": {
2026-06-21T09:37:52.2143474Z         "doc": {
2026-06-21T09:37:52.2143578Z           "complete": false,
2026-06-21T09:37:52.2143655Z           "evidence": []
2026-06-21T09:37:52.2143735Z         },
2026-06-21T09:37:52.2143820Z         "impl": {
2026-06-21T09:37:52.2143909Z           "complete": true,
2026-06-21T09:37:52.2143996Z           "evidence": [
2026-06-21T09:37:52.2144068Z             {
2026-06-21T09:37:52.2144187Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T09:37:52.2144268Z               "line": 71
2026-06-21T09:37:52.2144434Z             }
2026-06-21T09:37:52.2144525Z           ]
2026-06-21T09:37:52.2144607Z         },
2026-06-21T09:37:52.2144688Z         "int": {
2026-06-21T09:37:52.2144773Z           "complete": false,
2026-06-21T09:37:52.2144858Z           "evidence": []
2026-06-21T09:37:52.2144936Z         },
2026-06-21T09:37:52.2145021Z         "unit": {
2026-06-21T09:37:52.2145116Z           "complete": true,
2026-06-21T09:37:52.2145202Z           "evidence": [
2026-06-21T09:37:52.2145284Z             {
2026-06-21T09:37:52.2145393Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T09:37:52.2145479Z               "line": 37
2026-06-21T09:37:52.2145561Z             },
2026-06-21T09:37:52.2145641Z             {
2026-06-21T09:37:52.2145741Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T09:37:52.2145827Z               "line": 67
2026-06-21T09:37:52.2145914Z             }
2026-06-21T09:37:52.2145984Z           ]
2026-06-21T09:37:52.2146070Z         }
2026-06-21T09:37:52.2146152Z       }
2026-06-21T09:37:52.2146238Z     },
2026-06-21T09:37:52.2146327Z     {
2026-06-21T09:37:52.2146407Z       "id": "REQ-TERM-4",
2026-06-21T09:37:52.2146878Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T09:37:52.2146983Z       "requiredStages": [
2026-06-21T09:37:52.2147063Z         "impl",
2026-06-21T09:37:52.2147139Z         "unit",
2026-06-21T09:37:52.2147221Z         "int"
2026-06-21T09:37:52.2147298Z       ],
2026-06-21T09:37:52.2147378Z       "stages": {
2026-06-21T09:37:52.2147459Z         "doc": {
2026-06-21T09:37:52.2147555Z           "complete": false,
2026-06-21T09:37:52.2147636Z           "evidence": []
2026-06-21T09:37:52.2147721Z         },
2026-06-21T09:37:52.2147803Z         "impl": {
2026-06-21T09:37:52.2147893Z           "complete": true,
2026-06-21T09:37:52.2147979Z           "evidence": [
2026-06-21T09:37:52.2148055Z             {
2026-06-21T09:37:52.2148180Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2148256Z               "line": 37
2026-06-21T09:37:52.2148341Z             },
2026-06-21T09:37:52.2148423Z             {
2026-06-21T09:37:52.2148542Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2148627Z               "line": 25
2026-06-21T09:37:52.2148714Z             },
2026-06-21T09:37:52.2148795Z             {
2026-06-21T09:37:52.2148904Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2149084Z               "line": 114
2026-06-21T09:37:52.2149169Z             },
2026-06-21T09:37:52.2149254Z             {
2026-06-21T09:37:52.2149367Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2149459Z               "line": 267
2026-06-21T09:37:52.2149540Z             },
2026-06-21T09:37:52.2149620Z             {
2026-06-21T09:37:52.2149745Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2149826Z               "line": 289
2026-06-21T09:37:52.2149911Z             },
2026-06-21T09:37:52.2149978Z             {
2026-06-21T09:37:52.2150098Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2150188Z               "line": 307
2026-06-21T09:37:52.2150268Z             },
2026-06-21T09:37:52.2150351Z             {
2026-06-21T09:37:52.2150569Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:37:52.2150650Z               "line": 33
2026-06-21T09:37:52.2150737Z             },
2026-06-21T09:37:52.2150817Z             {
2026-06-21T09:37:52.2150941Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2151018Z               "line": 52
2026-06-21T09:37:52.2151104Z             },
2026-06-21T09:37:52.2151185Z             {
2026-06-21T09:37:52.2151305Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2151391Z               "line": 180
2026-06-21T09:37:52.2151479Z             },
2026-06-21T09:37:52.2151561Z             {
2026-06-21T09:37:52.2151776Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2151856Z               "line": 190
2026-06-21T09:37:52.2151942Z             },
2026-06-21T09:37:52.2152028Z             {
2026-06-21T09:37:52.2152137Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2152237Z               "line": 250
2026-06-21T09:37:52.2152319Z             },
2026-06-21T09:37:52.2152390Z             {
2026-06-21T09:37:52.2152509Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.2152596Z               "line": 284
2026-06-21T09:37:52.2152672Z             },
2026-06-21T09:37:52.2152753Z             {
2026-06-21T09:37:52.2152857Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.2152949Z               "line": 295
2026-06-21T09:37:52.2153029Z             },
2026-06-21T09:37:52.2153110Z             {
2026-06-21T09:37:52.2153220Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2153316Z               "line": 1193
2026-06-21T09:37:52.2153396Z             }
2026-06-21T09:37:52.2153482Z           ]
2026-06-21T09:37:52.2153559Z         },
2026-06-21T09:37:52.2153635Z         "int": {
2026-06-21T09:37:52.2153729Z           "complete": true,
2026-06-21T09:37:52.2153806Z           "evidence": [
2026-06-21T09:37:52.2153888Z             {
2026-06-21T09:37:52.2154006Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T09:37:52.2154087Z               "line": 18
2026-06-21T09:37:52.2154162Z             }
2026-06-21T09:37:52.2154234Z           ]
2026-06-21T09:37:52.2154319Z         },
2026-06-21T09:37:52.2154399Z         "unit": {
2026-06-21T09:37:52.2154494Z           "complete": true,
2026-06-21T09:37:52.2154571Z           "evidence": [
2026-06-21T09:37:52.2154647Z             {
2026-06-21T09:37:52.2154761Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2154847Z               "line": 364
2026-06-21T09:37:52.2154924Z             },
2026-06-21T09:37:52.2155014Z             {
2026-06-21T09:37:52.2155123Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2155215Z               "line": 416
2026-06-21T09:37:52.2155281Z             },
2026-06-21T09:37:52.2155366Z             {
2026-06-21T09:37:52.2155467Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2155558Z               "line": 426
2026-06-21T09:37:52.2155634Z             },
2026-06-21T09:37:52.2155719Z             {
2026-06-21T09:37:52.2155840Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2155920Z               "line": 436
2026-06-21T09:37:52.2156015Z             },
2026-06-21T09:37:52.2156092Z             {
2026-06-21T09:37:52.2156201Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2156292Z               "line": 456
2026-06-21T09:37:52.2156377Z             },
2026-06-21T09:37:52.2156465Z             {
2026-06-21T09:37:52.2156577Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2156673Z               "line": 478
2026-06-21T09:37:52.2156750Z             },
2026-06-21T09:37:52.2156836Z             {
2026-06-21T09:37:52.2156949Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2157039Z               "line": 491
2026-06-21T09:37:52.2157125Z             },
2026-06-21T09:37:52.2157299Z             {
2026-06-21T09:37:52.2157419Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T09:37:52.2157500Z               "line": 502
2026-06-21T09:37:52.2157585Z             },
2026-06-21T09:37:52.2157656Z             {
2026-06-21T09:37:52.2157762Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:37:52.2157853Z               "line": 108
2026-06-21T09:37:52.2157928Z             },
2026-06-21T09:37:52.2158010Z             {
2026-06-21T09:37:52.2158120Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T09:37:52.2158201Z               "line": 119
2026-06-21T09:37:52.2158286Z             },
2026-06-21T09:37:52.2158444Z             {
2026-06-21T09:37:52.2158548Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T09:37:52.2158634Z               "line": 127
2026-06-21T09:37:52.2158721Z             },
2026-06-21T09:37:52.2158801Z             {
2026-06-21T09:37:52.2158916Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2159111Z               "line": 474
2026-06-21T09:37:52.2159197Z             },
2026-06-21T09:37:52.2159284Z             {
2026-06-21T09:37:52.2159393Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2159478Z               "line": 501
2026-06-21T09:37:52.2159558Z             },
2026-06-21T09:37:52.2159644Z             {
2026-06-21T09:37:52.2159762Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2159842Z               "line": 520
2026-06-21T09:37:52.2159928Z             },
2026-06-21T09:37:52.2160009Z             {
2026-06-21T09:37:52.2160128Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2160213Z               "line": 535
2026-06-21T09:37:52.2160286Z             },
2026-06-21T09:37:52.2160368Z             {
2026-06-21T09:37:52.2160481Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2160562Z               "line": 561
2026-06-21T09:37:52.2160639Z             },
2026-06-21T09:37:52.2160729Z             {
2026-06-21T09:37:52.2160838Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2160921Z               "line": 581
2026-06-21T09:37:52.2161001Z             },
2026-06-21T09:37:52.2161087Z             {
2026-06-21T09:37:52.2161206Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2161283Z               "line": 591
2026-06-21T09:37:52.2161354Z             },
2026-06-21T09:37:52.2161435Z             {
2026-06-21T09:37:52.2161555Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2161640Z               "line": 683
2026-06-21T09:37:52.2161725Z             },
2026-06-21T09:37:52.2161811Z             {
2026-06-21T09:37:52.2161913Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.2162002Z               "line": 885
2026-06-21T09:37:52.2162074Z             },
2026-06-21T09:37:52.2162165Z             {
2026-06-21T09:37:52.2162270Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2162359Z               "line": 9792
2026-06-21T09:37:52.2162444Z             }
2026-06-21T09:37:52.2162526Z           ]
2026-06-21T09:37:52.2162612Z         }
2026-06-21T09:37:52.2162693Z       }
2026-06-21T09:37:52.2162778Z     },
2026-06-21T09:37:52.2162860Z     {
2026-06-21T09:37:52.2162945Z       "id": "REQ-TERM-5",
2026-06-21T09:37:52.2164429Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T09:37:52.2164524Z       "requiredStages": [
2026-06-21T09:37:52.2164712Z         "doc",
2026-06-21T09:37:52.2164799Z         "impl",
2026-06-21T09:37:52.2164879Z         "unit",
2026-06-21T09:37:52.2164964Z         "int"
2026-06-21T09:37:52.2165034Z       ],
2026-06-21T09:37:52.2165121Z       "stages": {
2026-06-21T09:37:52.2165199Z         "doc": {
2026-06-21T09:37:52.2165292Z           "complete": true,
2026-06-21T09:37:52.2165378Z           "evidence": [
2026-06-21T09:37:52.2165460Z             {
2026-06-21T09:37:52.2165565Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.2165645Z               "line": 234
2026-06-21T09:37:52.2165732Z             }
2026-06-21T09:37:52.2165912Z           ]
2026-06-21T09:37:52.2165993Z         },
2026-06-21T09:37:52.2166085Z         "impl": {
2026-06-21T09:37:52.2166170Z           "complete": true,
2026-06-21T09:37:52.2166405Z           "evidence": [
2026-06-21T09:37:52.2166484Z             {
2026-06-21T09:37:52.2166604Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2166710Z               "line": 75
2026-06-21T09:37:52.2166790Z             },
2026-06-21T09:37:52.2166876Z             {
2026-06-21T09:37:52.2166987Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2167072Z               "line": 131
2026-06-21T09:37:52.2167147Z             },
2026-06-21T09:37:52.2167233Z             {
2026-06-21T09:37:52.2167349Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.2167429Z               "line": 22
2026-06-21T09:37:52.2167514Z             },
2026-06-21T09:37:52.2167599Z             {
2026-06-21T09:37:52.2167714Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.2167797Z               "line": 87
2026-06-21T09:37:52.2167878Z             },
2026-06-21T09:37:52.2167964Z             {
2026-06-21T09:37:52.2168065Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T09:37:52.2168164Z               "line": 30
2026-06-21T09:37:52.2168240Z             },
2026-06-21T09:37:52.2168327Z             {
2026-06-21T09:37:52.2168446Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2168531Z               "line": 103
2026-06-21T09:37:52.2168604Z             },
2026-06-21T09:37:52.2168680Z             {
2026-06-21T09:37:52.2168793Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2168880Z               "line": 167
2026-06-21T09:37:52.2169047Z             },
2026-06-21T09:37:52.2169128Z             {
2026-06-21T09:37:52.2169238Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2169338Z               "line": 434
2026-06-21T09:37:52.2169423Z             },
2026-06-21T09:37:52.2169543Z             {
2026-06-21T09:37:52.2169643Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2169733Z               "line": 5650
2026-06-21T09:37:52.2169814Z             },
2026-06-21T09:37:52.2169892Z             {
2026-06-21T09:37:52.2170000Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2170085Z               "line": 5957
2026-06-21T09:37:52.2170171Z             }
2026-06-21T09:37:52.2170238Z           ]
2026-06-21T09:37:52.2170322Z         },
2026-06-21T09:37:52.2170407Z         "int": {
2026-06-21T09:37:52.2170488Z           "complete": true,
2026-06-21T09:37:52.2170579Z           "evidence": [
2026-06-21T09:37:52.2170660Z             {
2026-06-21T09:37:52.2170808Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T09:37:52.2170889Z               "line": 17
2026-06-21T09:37:52.2170970Z             }
2026-06-21T09:37:52.2171055Z           ]
2026-06-21T09:37:52.2171127Z         },
2026-06-21T09:37:52.2171218Z         "unit": {
2026-06-21T09:37:52.2171304Z           "complete": true,
2026-06-21T09:37:52.2171389Z           "evidence": [
2026-06-21T09:37:52.2171471Z             {
2026-06-21T09:37:52.2171590Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2171671Z               "line": 375
2026-06-21T09:37:52.2171752Z             },
2026-06-21T09:37:52.2171966Z             {
2026-06-21T09:37:52.2172066Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.2172149Z               "line": 162
2026-06-21T09:37:52.2172228Z             },
2026-06-21T09:37:52.2172305Z             {
2026-06-21T09:37:52.2172420Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.2172506Z               "line": 179
2026-06-21T09:37:52.2172591Z             },
2026-06-21T09:37:52.2172667Z             {
2026-06-21T09:37:52.2172774Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.2172858Z               "line": 201
2026-06-21T09:37:52.2172943Z             },
2026-06-21T09:37:52.2173124Z             {
2026-06-21T09:37:52.2173234Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.2173324Z               "line": 212
2026-06-21T09:37:52.2173396Z             },
2026-06-21T09:37:52.2173483Z             {
2026-06-21T09:37:52.2173586Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T09:37:52.2173672Z               "line": 223
2026-06-21T09:37:52.2173759Z             },
2026-06-21T09:37:52.2173839Z             {
2026-06-21T09:37:52.2173967Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2174050Z               "line": 1525
2026-06-21T09:37:52.2174140Z             },
2026-06-21T09:37:52.2174221Z             {
2026-06-21T09:37:52.2174335Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2174426Z               "line": 1568
2026-06-21T09:37:52.2174502Z             },
2026-06-21T09:37:52.2174587Z             {
2026-06-21T09:37:52.2174698Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2174798Z               "line": 606
2026-06-21T09:37:52.2174874Z             },
2026-06-21T09:37:52.2174965Z             {
2026-06-21T09:37:52.2175084Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2175173Z               "line": 634
2026-06-21T09:37:52.2175254Z             },
2026-06-21T09:37:52.2175335Z             {
2026-06-21T09:37:52.2175453Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2175548Z               "line": 646
2026-06-21T09:37:52.2175624Z             },
2026-06-21T09:37:52.2175701Z             {
2026-06-21T09:37:52.2175815Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2175910Z               "line": 669
2026-06-21T09:37:52.2175991Z             },
2026-06-21T09:37:52.2176077Z             {
2026-06-21T09:37:52.2176186Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2176273Z               "line": 8503
2026-06-21T09:37:52.2176359Z             },
2026-06-21T09:37:52.2176440Z             {
2026-06-21T09:37:52.2176544Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2176626Z               "line": 8561
2026-06-21T09:37:52.2176697Z             }
2026-06-21T09:37:52.2176778Z           ]
2026-06-21T09:37:52.2176849Z         }
2026-06-21T09:37:52.2176926Z       }
2026-06-21T09:37:52.2177017Z     },
2026-06-21T09:37:52.2177088Z     {
2026-06-21T09:37:52.2177173Z       "id": "REQ-TERM-6",
2026-06-21T09:37:52.2178255Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T09:37:52.2178348Z       "requiredStages": [
2026-06-21T09:37:52.2178424Z         "impl",
2026-06-21T09:37:52.2178510Z         "unit",
2026-06-21T09:37:52.2178596Z         "int"
2026-06-21T09:37:52.2178677Z       ],
2026-06-21T09:37:52.2178758Z       "stages": {
2026-06-21T09:37:52.2178839Z         "doc": {
2026-06-21T09:37:52.2178930Z           "complete": false,
2026-06-21T09:37:52.2179096Z           "evidence": []
2026-06-21T09:37:52.2179298Z         },
2026-06-21T09:37:52.2179373Z         "impl": {
2026-06-21T09:37:52.2179493Z           "complete": true,
2026-06-21T09:37:52.2179583Z           "evidence": [
2026-06-21T09:37:52.2179655Z             {
2026-06-21T09:37:52.2179769Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2179851Z               "line": 132
2026-06-21T09:37:52.2179931Z             },
2026-06-21T09:37:52.2180021Z             {
2026-06-21T09:37:52.2180128Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2180217Z               "line": 187
2026-06-21T09:37:52.2180293Z             },
2026-06-21T09:37:52.2180375Z             {
2026-06-21T09:37:52.2180584Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.2180683Z               "line": 17
2026-06-21T09:37:52.2180764Z             },
2026-06-21T09:37:52.2180845Z             {
2026-06-21T09:37:52.2180967Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.2181043Z               "line": 104
2026-06-21T09:37:52.2181134Z             },
2026-06-21T09:37:52.2181216Z             {
2026-06-21T09:37:52.2181343Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2181431Z               "line": 319
2026-06-21T09:37:52.2181511Z             },
2026-06-21T09:37:52.2181591Z             {
2026-06-21T09:37:52.2181702Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2181783Z               "line": 396
2026-06-21T09:37:52.2181864Z             }
2026-06-21T09:37:52.2181949Z           ]
2026-06-21T09:37:52.2182031Z         },
2026-06-21T09:37:52.2182112Z         "int": {
2026-06-21T09:37:52.2182212Z           "complete": true,
2026-06-21T09:37:52.2182292Z           "evidence": [
2026-06-21T09:37:52.2182385Z             {
2026-06-21T09:37:52.2182526Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T09:37:52.2182612Z               "line": 18
2026-06-21T09:37:52.2182695Z             }
2026-06-21T09:37:52.2182765Z           ]
2026-06-21T09:37:52.2182850Z         },
2026-06-21T09:37:52.2182931Z         "unit": {
2026-06-21T09:37:52.2183019Z           "complete": true,
2026-06-21T09:37:52.2183103Z           "evidence": [
2026-06-21T09:37:52.2183189Z             {
2026-06-21T09:37:52.2183305Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.2183386Z               "line": 135
2026-06-21T09:37:52.2183470Z             },
2026-06-21T09:37:52.2183536Z             {
2026-06-21T09:37:52.2183651Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.2183733Z               "line": 150
2026-06-21T09:37:52.2183813Z             },
2026-06-21T09:37:52.2183913Z             {
2026-06-21T09:37:52.2184014Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.2184104Z               "line": 166
2026-06-21T09:37:52.2184184Z             },
2026-06-21T09:37:52.2184276Z             {
2026-06-21T09:37:52.2184386Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T09:37:52.2184475Z               "line": 257
2026-06-21T09:37:52.2184562Z             },
2026-06-21T09:37:52.2184638Z             {
2026-06-21T09:37:52.2184757Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2184842Z               "line": 738
2026-06-21T09:37:52.2184925Z             },
2026-06-21T09:37:52.2185006Z             {
2026-06-21T09:37:52.2185119Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2185206Z               "line": 759
2026-06-21T09:37:52.2185278Z             },
2026-06-21T09:37:52.2185358Z             {
2026-06-21T09:37:52.2185463Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T09:37:52.2185559Z               "line": 726
2026-06-21T09:37:52.2185635Z             }
2026-06-21T09:37:52.2185710Z           ]
2026-06-21T09:37:52.2185786Z         }
2026-06-21T09:37:52.2185862Z       }
2026-06-21T09:37:52.2185943Z     },
2026-06-21T09:37:52.2186023Z     {
2026-06-21T09:37:52.2186103Z       "id": "REQ-TERM-7",
2026-06-21T09:37:52.2187305Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T09:37:52.2187404Z       "requiredStages": [
2026-06-21T09:37:52.2187496Z         "impl",
2026-06-21T09:37:52.2187577Z         "unit",
2026-06-21T09:37:52.2187662Z         "int"
2026-06-21T09:37:52.2187820Z       ],
2026-06-21T09:37:52.2187901Z       "stages": {
2026-06-21T09:37:52.2187987Z         "doc": {
2026-06-21T09:37:52.2188068Z           "complete": false,
2026-06-21T09:37:52.2188159Z           "evidence": []
2026-06-21T09:37:52.2188239Z         },
2026-06-21T09:37:52.2188325Z         "impl": {
2026-06-21T09:37:52.2188426Z           "complete": true,
2026-06-21T09:37:52.2188503Z           "evidence": [
2026-06-21T09:37:52.2188587Z             {
2026-06-21T09:37:52.2188700Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2188781Z               "line": 133
2026-06-21T09:37:52.2188862Z             },
2026-06-21T09:37:52.2189027Z             {
2026-06-21T09:37:52.2189147Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2189238Z               "line": 326
2026-06-21T09:37:52.2189323Z             },
2026-06-21T09:37:52.2189395Z             {
2026-06-21T09:37:52.2189509Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:37:52.2189599Z               "line": 15
2026-06-21T09:37:52.2189680Z             },
2026-06-21T09:37:52.2189767Z             {
2026-06-21T09:37:52.2189877Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:37:52.2189957Z               "line": 32
2026-06-21T09:37:52.2190039Z             },
2026-06-21T09:37:52.2190129Z             {
2026-06-21T09:37:52.2190243Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:37:52.2190334Z               "line": 49
2026-06-21T09:37:52.2190416Z             },
2026-06-21T09:37:52.2190500Z             {
2026-06-21T09:37:52.2190620Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2190702Z               "line": 286
2026-06-21T09:37:52.2190787Z             },
2026-06-21T09:37:52.2190863Z             {
2026-06-21T09:37:52.2190984Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2191079Z               "line": 320
2026-06-21T09:37:52.2191148Z             }
2026-06-21T09:37:52.2191239Z           ]
2026-06-21T09:37:52.2191320Z         },
2026-06-21T09:37:52.2191405Z         "int": {
2026-06-21T09:37:52.2191494Z           "complete": true,
2026-06-21T09:37:52.2191579Z           "evidence": [
2026-06-21T09:37:52.2191661Z             {
2026-06-21T09:37:52.2191799Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T09:37:52.2191889Z               "line": 19
2026-06-21T09:37:52.2191971Z             }
2026-06-21T09:37:52.2192052Z           ]
2026-06-21T09:37:52.2192133Z         },
2026-06-21T09:37:52.2192209Z         "unit": {
2026-06-21T09:37:52.2192296Z           "complete": true,
2026-06-21T09:37:52.2192381Z           "evidence": [
2026-06-21T09:37:52.2192471Z             {
2026-06-21T09:37:52.2192582Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2192668Z               "line": 455
2026-06-21T09:37:52.2192748Z             },
2026-06-21T09:37:52.2192834Z             {
2026-06-21T09:37:52.2192950Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T09:37:52.2193039Z               "line": 568
2026-06-21T09:37:52.2193124Z             },
2026-06-21T09:37:52.2193206Z             {
2026-06-21T09:37:52.2193316Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:37:52.2193411Z               "line": 58
2026-06-21T09:37:52.2193612Z             },
2026-06-21T09:37:52.2193696Z             {
2026-06-21T09:37:52.2193802Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:37:52.2193884Z               "line": 77
2026-06-21T09:37:52.2193955Z             },
2026-06-21T09:37:52.2194039Z             {
2026-06-21T09:37:52.2194143Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T09:37:52.2194226Z               "line": 87
2026-06-21T09:37:52.2194312Z             },
2026-06-21T09:37:52.2194383Z             {
2026-06-21T09:37:52.2194502Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T09:37:52.2194583Z               "line": 94
2026-06-21T09:37:52.2194797Z             },
2026-06-21T09:37:52.2194879Z             {
2026-06-21T09:37:52.2194998Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2195088Z               "line": 691
2026-06-21T09:37:52.2195170Z             },
2026-06-21T09:37:52.2195255Z             {
2026-06-21T09:37:52.2195360Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T09:37:52.2195456Z               "line": 716
2026-06-21T09:37:52.2195532Z             }
2026-06-21T09:37:52.2195613Z           ]
2026-06-21T09:37:52.2195694Z         }
2026-06-21T09:37:52.2195771Z       }
2026-06-21T09:37:52.2195857Z     },
2026-06-21T09:37:52.2195937Z     {
2026-06-21T09:37:52.2196023Z       "id": "REQ-UPD-1",
2026-06-21T09:37:52.2196139Z       "title": "Peer-propagated update over P2P",
2026-06-21T09:37:52.2196232Z       "requiredStages": [
2026-06-21T09:37:52.2196322Z         "impl",
2026-06-21T09:37:52.2196403Z         "unit",
2026-06-21T09:37:52.2196493Z         "int"
2026-06-21T09:37:52.2196573Z       ],
2026-06-21T09:37:52.2196663Z       "stages": {
2026-06-21T09:37:52.2196744Z         "doc": {
2026-06-21T09:37:52.2196845Z           "complete": false,
2026-06-21T09:37:52.2196940Z           "evidence": []
2026-06-21T09:37:52.2197020Z         },
2026-06-21T09:37:52.2197107Z         "impl": {
2026-06-21T09:37:52.2197188Z           "complete": true,
2026-06-21T09:37:52.2197288Z           "evidence": [
2026-06-21T09:37:52.2197359Z             {
2026-06-21T09:37:52.2197479Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2197564Z               "line": 28
2026-06-21T09:37:52.2197635Z             },
2026-06-21T09:37:52.2197718Z             {
2026-06-21T09:37:52.2197841Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2197927Z               "line": 103
2026-06-21T09:37:52.2198008Z             },
2026-06-21T09:37:52.2198089Z             {
2026-06-21T09:37:52.2198208Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2198289Z               "line": 342
2026-06-21T09:37:52.2198381Z             },
2026-06-21T09:37:52.2198461Z             {
2026-06-21T09:37:52.2198580Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2198672Z               "line": 22
2026-06-21T09:37:52.2198757Z             },
2026-06-21T09:37:52.2198842Z             {
2026-06-21T09:37:52.2199029Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2199124Z               "line": 207
2026-06-21T09:37:52.2199194Z             },
2026-06-21T09:37:52.2199289Z             {
2026-06-21T09:37:52.2199431Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2199516Z               "line": 283
2026-06-21T09:37:52.2202430Z             },
2026-06-21T09:37:52.2202526Z             {
2026-06-21T09:37:52.2202656Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2202745Z               "line": 340
2026-06-21T09:37:52.2202827Z             },
2026-06-21T09:37:52.2202913Z             {
2026-06-21T09:37:52.2203040Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.2203122Z               "line": 37
2026-06-21T09:37:52.2203204Z             }
2026-06-21T09:37:52.2203284Z           ]
2026-06-21T09:37:52.2203369Z         },
2026-06-21T09:37:52.2203456Z         "int": {
2026-06-21T09:37:52.2203684Z           "complete": true,
2026-06-21T09:37:52.2203771Z           "evidence": [
2026-06-21T09:37:52.2203863Z             {
2026-06-21T09:37:52.2203976Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T09:37:52.2204071Z               "line": 207
2026-06-21T09:37:52.2204149Z             },
2026-06-21T09:37:52.2204233Z             {
2026-06-21T09:37:52.2204362Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T09:37:52.2204444Z               "line": 1082
2026-06-21T09:37:52.2204525Z             }
2026-06-21T09:37:52.2204599Z           ]
2026-06-21T09:37:52.2204675Z         },
2026-06-21T09:37:52.2204747Z         "unit": {
2026-06-21T09:37:52.2204938Z           "complete": true,
2026-06-21T09:37:52.2205028Z           "evidence": [
2026-06-21T09:37:52.2205105Z             {
2026-06-21T09:37:52.2205224Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2205305Z               "line": 490
2026-06-21T09:37:52.2205391Z             },
2026-06-21T09:37:52.2205468Z             {
2026-06-21T09:37:52.2205577Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2205662Z               "line": 616
2026-06-21T09:37:52.2205745Z             },
2026-06-21T09:37:52.2205830Z             {
2026-06-21T09:37:52.2205953Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:37:52.2206035Z               "line": 277
2026-06-21T09:37:52.2206116Z             },
2026-06-21T09:37:52.2206202Z             {
2026-06-21T09:37:52.2206321Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.2206403Z               "line": 124
2026-06-21T09:37:52.2206492Z             },
2026-06-21T09:37:52.2206573Z             {
2026-06-21T09:37:52.2206704Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.2206788Z               "line": 200
2026-06-21T09:37:52.2206873Z             }
2026-06-21T09:37:52.2206968Z           ]
2026-06-21T09:37:52.2207045Z         }
2026-06-21T09:37:52.2207133Z       }
2026-06-21T09:37:52.2207218Z     },
2026-06-21T09:37:52.2207309Z     {
2026-06-21T09:37:52.2207396Z       "id": "REQ-UPD-2",
2026-06-21T09:37:52.2207547Z       "title": "All binaries signature-verified before handoff",
2026-06-21T09:37:52.2207638Z       "requiredStages": [
2026-06-21T09:37:52.2207720Z         "impl",
2026-06-21T09:37:52.2207795Z         "unit"
2026-06-21T09:37:52.2207876Z       ],
2026-06-21T09:37:52.2207958Z       "stages": {
2026-06-21T09:37:52.2208030Z         "doc": {
2026-06-21T09:37:52.2208124Z           "complete": false,
2026-06-21T09:37:52.2208214Z           "evidence": []
2026-06-21T09:37:52.2208297Z         },
2026-06-21T09:37:52.2208378Z         "impl": {
2026-06-21T09:37:52.2208473Z           "complete": true,
2026-06-21T09:37:52.2208554Z           "evidence": [
2026-06-21T09:37:52.2208636Z             {
2026-06-21T09:37:52.2208759Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2208849Z               "line": 343
2026-06-21T09:37:52.2208937Z             },
2026-06-21T09:37:52.2209087Z             {
2026-06-21T09:37:52.2209203Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2209308Z               "line": 476
2026-06-21T09:37:52.2209393Z             },
2026-06-21T09:37:52.2209479Z             {
2026-06-21T09:37:52.2209599Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2209684Z               "line": 29
2026-06-21T09:37:52.2209763Z             },
2026-06-21T09:37:52.2209845Z             {
2026-06-21T09:37:52.2209959Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2210038Z               "line": 271
2026-06-21T09:37:52.2210118Z             },
2026-06-21T09:37:52.2210195Z             {
2026-06-21T09:37:52.2210301Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2210391Z               "line": 288
2026-06-21T09:37:52.2210467Z             },
2026-06-21T09:37:52.2210554Z             {
2026-06-21T09:37:52.2210673Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2210868Z               "line": 408
2026-06-21T09:37:52.2210949Z             },
2026-06-21T09:37:52.2211030Z             {
2026-06-21T09:37:52.2211149Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2211226Z               "line": 558
2026-06-21T09:37:52.2211311Z             },
2026-06-21T09:37:52.2211396Z             {
2026-06-21T09:37:52.2211512Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2211593Z               "line": 155
2026-06-21T09:37:52.2211674Z             }
2026-06-21T09:37:52.2211760Z           ]
2026-06-21T09:37:52.2211836Z         },
2026-06-21T09:37:52.2212021Z         "int": {
2026-06-21T09:37:52.2212114Z           "complete": false,
2026-06-21T09:37:52.2212199Z           "evidence": []
2026-06-21T09:37:52.2212279Z         },
2026-06-21T09:37:52.2212359Z         "unit": {
2026-06-21T09:37:52.2212455Z           "complete": true,
2026-06-21T09:37:52.2212540Z           "evidence": [
2026-06-21T09:37:52.2212633Z             {
2026-06-21T09:37:52.2212753Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2212834Z               "line": 750
2026-06-21T09:37:52.2212920Z             },
2026-06-21T09:37:52.2213005Z             {
2026-06-21T09:37:52.2213116Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2213191Z               "line": 811
2026-06-21T09:37:52.2213272Z             },
2026-06-21T09:37:52.2213358Z             {
2026-06-21T09:37:52.2213473Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2213564Z               "line": 825
2026-06-21T09:37:52.2213644Z             },
2026-06-21T09:37:52.2213731Z             {
2026-06-21T09:37:52.2213839Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2213921Z               "line": 841
2026-06-21T09:37:52.2214006Z             },
2026-06-21T09:37:52.2214089Z             {
2026-06-21T09:37:52.2214203Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2214283Z               "line": 932
2026-06-21T09:37:52.2214365Z             },
2026-06-21T09:37:52.2214441Z             {
2026-06-21T09:37:52.2214555Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2214641Z               "line": 414
2026-06-21T09:37:52.2214709Z             },
2026-06-21T09:37:52.2214794Z             {
2026-06-21T09:37:52.2214898Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2214990Z               "line": 427
2026-06-21T09:37:52.2215062Z             },
2026-06-21T09:37:52.2215141Z             {
2026-06-21T09:37:52.2215259Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:37:52.2215350Z               "line": 410
2026-06-21T09:37:52.2215433Z             }
2026-06-21T09:37:52.2215512Z           ]
2026-06-21T09:37:52.2215593Z         }
2026-06-21T09:37:52.2215675Z       }
2026-06-21T09:37:52.2215761Z     },
2026-06-21T09:37:52.2215846Z     {
2026-06-21T09:37:52.2215932Z       "id": "REQ-UPD-3",
2026-06-21T09:37:52.2216104Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T09:37:52.2216194Z       "requiredStages": [
2026-06-21T09:37:52.2216280Z         "impl",
2026-06-21T09:37:52.2216366Z         "unit",
2026-06-21T09:37:52.2216452Z         "int"
2026-06-21T09:37:52.2216542Z       ],
2026-06-21T09:37:52.2216624Z       "stages": {
2026-06-21T09:37:52.2216714Z         "doc": {
2026-06-21T09:37:52.2216804Z           "complete": false,
2026-06-21T09:37:52.2216891Z           "evidence": []
2026-06-21T09:37:52.2216973Z         },
2026-06-21T09:37:52.2217061Z         "impl": {
2026-06-21T09:37:52.2217162Z           "complete": true,
2026-06-21T09:37:52.2217244Z           "evidence": [
2026-06-21T09:37:52.2217325Z             {
2026-06-21T09:37:52.2217438Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2217518Z               "line": 40
2026-06-21T09:37:52.2217600Z             },
2026-06-21T09:37:52.2217760Z             {
2026-06-21T09:37:52.2217883Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2217965Z               "line": 87
2026-06-21T09:37:52.2218046Z             },
2026-06-21T09:37:52.2218122Z             {
2026-06-21T09:37:52.2218237Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T09:37:52.2218323Z               "line": 1042
2026-06-21T09:37:52.2218403Z             },
2026-06-21T09:37:52.2218484Z             {
2026-06-21T09:37:52.2218595Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T09:37:52.2218675Z               "line": 2017
2026-06-21T09:37:52.2218756Z             },
2026-06-21T09:37:52.2218933Z             {
2026-06-21T09:37:52.2219109Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2219182Z               "line": 26
2026-06-21T09:37:52.2219285Z             },
2026-06-21T09:37:52.2219366Z             {
2026-06-21T09:37:52.2219506Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2219590Z               "line": 114
2026-06-21T09:37:52.2219672Z             },
2026-06-21T09:37:52.2219753Z             {
2026-06-21T09:37:52.2219863Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2219953Z               "line": 246
2026-06-21T09:37:52.2220034Z             },
2026-06-21T09:37:52.2220111Z             {
2026-06-21T09:37:52.2220220Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2220305Z               "line": 2442
2026-06-21T09:37:52.2220390Z             }
2026-06-21T09:37:52.2220467Z           ]
2026-06-21T09:37:52.2220551Z         },
2026-06-21T09:37:52.2220632Z         "int": {
2026-06-21T09:37:52.2220717Z           "complete": true,
2026-06-21T09:37:52.2220799Z           "evidence": [
2026-06-21T09:37:52.2220880Z             {
2026-06-21T09:37:52.2221007Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T09:37:52.2221095Z               "line": 58
2026-06-21T09:37:52.2221171Z             }
2026-06-21T09:37:52.2221261Z           ]
2026-06-21T09:37:52.2221346Z         },
2026-06-21T09:37:52.2221419Z         "unit": {
2026-06-21T09:37:52.2221514Z           "complete": true,
2026-06-21T09:37:52.2221604Z           "evidence": [
2026-06-21T09:37:52.2221686Z             {
2026-06-21T09:37:52.2221814Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2221900Z               "line": 532
2026-06-21T09:37:52.2221981Z             },
2026-06-21T09:37:52.2222059Z             {
2026-06-21T09:37:52.2222177Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2222267Z               "line": 585
2026-06-21T09:37:52.2222349Z             },
2026-06-21T09:37:52.2222430Z             {
2026-06-21T09:37:52.2222533Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2222620Z               "line": 653
2026-06-21T09:37:52.2222702Z             },
2026-06-21T09:37:52.2222787Z             {
2026-06-21T09:37:52.2222900Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T09:37:52.2222981Z               "line": 1102
2026-06-21T09:37:52.2223067Z             },
2026-06-21T09:37:52.2223151Z             {
2026-06-21T09:37:52.2223269Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2223355Z               "line": 271
2026-06-21T09:37:52.2223433Z             },
2026-06-21T09:37:52.2223508Z             {
2026-06-21T09:37:52.2223613Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2223695Z               "line": 295
2026-06-21T09:37:52.2223776Z             },
2026-06-21T09:37:52.2223860Z             {
2026-06-21T09:37:52.2223967Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2224062Z               "line": 316
2026-06-21T09:37:52.2224143Z             },
2026-06-21T09:37:52.2224213Z             {
2026-06-21T09:37:52.2224329Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2224414Z               "line": 332
2026-06-21T09:37:52.2224500Z             }
2026-06-21T09:37:52.2224686Z           ]
2026-06-21T09:37:52.2224777Z         }
2026-06-21T09:37:52.2224862Z       }
2026-06-21T09:37:52.2224944Z     },
2026-06-21T09:37:52.2225020Z     {
2026-06-21T09:37:52.2225106Z       "id": "REQ-UPD-4",
2026-06-21T09:37:52.2225278Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T09:37:52.2225372Z       "requiredStages": [
2026-06-21T09:37:52.2225449Z         "impl",
2026-06-21T09:37:52.2225531Z         "unit"
2026-06-21T09:37:52.2225607Z       ],
2026-06-21T09:37:52.2225692Z       "stages": {
2026-06-21T09:37:52.2225767Z         "doc": {
2026-06-21T09:37:52.2225858Z           "complete": false,
2026-06-21T09:37:52.2226072Z           "evidence": []
2026-06-21T09:37:52.2226162Z         },
2026-06-21T09:37:52.2226250Z         "impl": {
2026-06-21T09:37:52.2226336Z           "complete": true,
2026-06-21T09:37:52.2226430Z           "evidence": [
2026-06-21T09:37:52.2226512Z             {
2026-06-21T09:37:52.2226621Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2226702Z               "line": 41
2026-06-21T09:37:52.2226788Z             },
2026-06-21T09:37:52.2226874Z             {
2026-06-21T09:37:52.2226993Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2227078Z               "line": 88
2026-06-21T09:37:52.2227161Z             },
2026-06-21T09:37:52.2227269Z             {
2026-06-21T09:37:52.2227388Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:37:52.2227475Z               "line": 23
2026-06-21T09:37:52.2227561Z             },
2026-06-21T09:37:52.2227636Z             {
2026-06-21T09:37:52.2227760Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:37:52.2227843Z               "line": 56
2026-06-21T09:37:52.2227927Z             },
2026-06-21T09:37:52.2228012Z             {
2026-06-21T09:37:52.2228117Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:37:52.2228203Z               "line": 77
2026-06-21T09:37:52.2228291Z             },
2026-06-21T09:37:52.2228376Z             {
2026-06-21T09:37:52.2228487Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T09:37:52.2228564Z               "line": 236
2026-06-21T09:37:52.2228648Z             },
2026-06-21T09:37:52.2228725Z             {
2026-06-21T09:37:52.2228840Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T09:37:52.2228921Z               "line": 108
2026-06-21T09:37:52.2229073Z             },
2026-06-21T09:37:52.2229150Z             {
2026-06-21T09:37:52.2229273Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.2229359Z               "line": 270
2026-06-21T09:37:52.2229437Z             },
2026-06-21T09:37:52.2229522Z             {
2026-06-21T09:37:52.2229616Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2229698Z               "line": 2441
2026-06-21T09:37:52.2229775Z             }
2026-06-21T09:37:52.2229860Z           ]
2026-06-21T09:37:52.2229941Z         },
2026-06-21T09:37:52.2230028Z         "int": {
2026-06-21T09:37:52.2230118Z           "complete": false,
2026-06-21T09:37:52.2230198Z           "evidence": []
2026-06-21T09:37:52.2230284Z         },
2026-06-21T09:37:52.2230357Z         "unit": {
2026-06-21T09:37:52.2230447Z           "complete": true,
2026-06-21T09:37:52.2230542Z           "evidence": [
2026-06-21T09:37:52.2230614Z             {
2026-06-21T09:37:52.2230734Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2230813Z               "line": 581
2026-06-21T09:37:52.2230898Z             },
2026-06-21T09:37:52.2230979Z             {
2026-06-21T09:37:52.2231098Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2231197Z               "line": 706
2026-06-21T09:37:52.2231272Z             },
2026-06-21T09:37:52.2231359Z             {
2026-06-21T09:37:52.2231464Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T09:37:52.2231558Z               "line": 384
2026-06-21T09:37:52.2231630Z             },
2026-06-21T09:37:52.2231835Z             {
2026-06-21T09:37:52.2231941Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:37:52.2232027Z               "line": 102
2026-06-21T09:37:52.2232112Z             },
2026-06-21T09:37:52.2232193Z             {
2026-06-21T09:37:52.2232304Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:37:52.2232393Z               "line": 123
2026-06-21T09:37:52.2232479Z             },
2026-06-21T09:37:52.2232565Z             {
2026-06-21T09:37:52.2232665Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T09:37:52.2232755Z               "line": 142
2026-06-21T09:37:52.2232943Z             },
2026-06-21T09:37:52.2233032Z             {
2026-06-21T09:37:52.2233137Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T09:37:52.2233229Z               "line": 582
2026-06-21T09:37:52.2233314Z             },
2026-06-21T09:37:52.2233394Z             {
2026-06-21T09:37:52.2233508Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T09:37:52.2233608Z               "line": 566
2026-06-21T09:37:52.2233692Z             },
2026-06-21T09:37:52.2233768Z             {
2026-06-21T09:37:52.2233863Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2233955Z               "line": 8256
2026-06-21T09:37:52.2234040Z             }
2026-06-21T09:37:52.2234120Z           ]
2026-06-21T09:37:52.2234202Z         }
2026-06-21T09:37:52.2234298Z       }
2026-06-21T09:37:52.2234364Z     },
2026-06-21T09:37:52.2234444Z     {
2026-06-21T09:37:52.2234532Z       "id": "REQ-UPD-5",
2026-06-21T09:37:52.2234665Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T09:37:52.2234768Z       "requiredStages": [
2026-06-21T09:37:52.2234847Z         "impl",
2026-06-21T09:37:52.2234932Z         "unit"
2026-06-21T09:37:52.2235013Z       ],
2026-06-21T09:37:52.2235103Z       "stages": {
2026-06-21T09:37:52.2235185Z         "doc": {
2026-06-21T09:37:52.2235266Z           "complete": false,
2026-06-21T09:37:52.2235365Z           "evidence": []
2026-06-21T09:37:52.2235442Z         },
2026-06-21T09:37:52.2235523Z         "impl": {
2026-06-21T09:37:52.2235604Z           "complete": true,
2026-06-21T09:37:52.2235685Z           "evidence": [
2026-06-21T09:37:52.2235771Z             {
2026-06-21T09:37:52.2235904Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2235995Z               "line": 27
2026-06-21T09:37:52.2236077Z             },
2026-06-21T09:37:52.2236163Z             {
2026-06-21T09:37:52.2236275Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2236365Z               "line": 87
2026-06-21T09:37:52.2236461Z             },
2026-06-21T09:37:52.2236543Z             {
2026-06-21T09:37:52.2236656Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2236757Z               "line": 145
2026-06-21T09:37:52.2236843Z             },
2026-06-21T09:37:52.2236929Z             {
2026-06-21T09:37:52.2237047Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2237144Z               "line": 492
2026-06-21T09:37:52.2237225Z             },
2026-06-21T09:37:52.2237309Z             {
2026-06-21T09:37:52.2237420Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2237515Z               "line": 546
2026-06-21T09:37:52.2237596Z             }
2026-06-21T09:37:52.2237677Z           ]
2026-06-21T09:37:52.2237759Z         },
2026-06-21T09:37:52.2237839Z         "int": {
2026-06-21T09:37:52.2237948Z           "complete": false,
2026-06-21T09:37:52.2238031Z           "evidence": []
2026-06-21T09:37:52.2238116Z         },
2026-06-21T09:37:52.2238205Z         "unit": {
2026-06-21T09:37:52.2238292Z           "complete": true,
2026-06-21T09:37:52.2238398Z           "evidence": [
2026-06-21T09:37:52.2238501Z             {
2026-06-21T09:37:52.2238629Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2238710Z               "line": 272
2026-06-21T09:37:52.2238870Z             },
2026-06-21T09:37:52.2239042Z             {
2026-06-21T09:37:52.2239161Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2239261Z               "line": 286
2026-06-21T09:37:52.2239347Z             },
2026-06-21T09:37:52.2239428Z             {
2026-06-21T09:37:52.2239547Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2239634Z               "line": 300
2026-06-21T09:37:52.2239710Z             },
2026-06-21T09:37:52.2239796Z             {
2026-06-21T09:37:52.2239919Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2240006Z               "line": 314
2026-06-21T09:37:52.2240191Z             },
2026-06-21T09:37:52.2240273Z             {
2026-06-21T09:37:52.2240396Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2240491Z               "line": 348
2026-06-21T09:37:52.2240573Z             },
2026-06-21T09:37:52.2240655Z             {
2026-06-21T09:37:52.2240778Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2240868Z               "line": 1071
2026-06-21T09:37:52.2240946Z             }
2026-06-21T09:37:52.2241035Z           ]
2026-06-21T09:37:52.2241116Z         }
2026-06-21T09:37:52.2241193Z       }
2026-06-21T09:37:52.2241270Z     },
2026-06-21T09:37:52.2241350Z     {
2026-06-21T09:37:52.2241435Z       "id": "REQ-UPD-6",
2026-06-21T09:37:52.2242215Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T09:37:52.2242315Z       "requiredStages": [
2026-06-21T09:37:52.2242405Z         "doc",
2026-06-21T09:37:52.2242491Z         "impl",
2026-06-21T09:37:52.2242582Z         "unit",
2026-06-21T09:37:52.2242663Z         "int"
2026-06-21T09:37:52.2242777Z       ],
2026-06-21T09:37:52.2242859Z       "stages": {
2026-06-21T09:37:52.2242944Z         "doc": {
2026-06-21T09:37:52.2243034Z           "complete": true,
2026-06-21T09:37:52.2243110Z           "evidence": [
2026-06-21T09:37:52.2243193Z             {
2026-06-21T09:37:52.2243320Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T09:37:52.2243416Z               "line": 3
2026-06-21T09:37:52.2243489Z             },
2026-06-21T09:37:52.2243574Z             {
2026-06-21T09:37:52.2243673Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T09:37:52.2243750Z               "line": 3
2026-06-21T09:37:52.2243828Z             },
2026-06-21T09:37:52.2243898Z             {
2026-06-21T09:37:52.2244063Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T09:37:52.2244149Z               "line": 3
2026-06-21T09:37:52.2244224Z             }
2026-06-21T09:37:52.2244300Z           ]
2026-06-21T09:37:52.2244380Z         },
2026-06-21T09:37:52.2244462Z         "impl": {
2026-06-21T09:37:52.2244553Z           "complete": true,
2026-06-21T09:37:52.2244652Z           "evidence": [
2026-06-21T09:37:52.2244738Z             {
2026-06-21T09:37:52.2244867Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2244952Z               "line": 76
2026-06-21T09:37:52.2245029Z             },
2026-06-21T09:37:52.2245116Z             {
2026-06-21T09:37:52.2245229Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2245319Z               "line": 212
2026-06-21T09:37:52.2245407Z             },
2026-06-21T09:37:52.2245487Z             {
2026-06-21T09:37:52.2245601Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2245687Z               "line": 69
2026-06-21T09:37:52.2245769Z             },
2026-06-21T09:37:52.2245849Z             {
2026-06-21T09:37:52.2245973Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2246060Z               "line": 133
2026-06-21T09:37:52.2246140Z             },
2026-06-21T09:37:52.2246336Z             {
2026-06-21T09:37:52.2246455Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2246545Z               "line": 243
2026-06-21T09:37:52.2246627Z             },
2026-06-21T09:37:52.2246714Z             {
2026-06-21T09:37:52.2246831Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2246920Z               "line": 406
2026-06-21T09:37:52.2247007Z             },
2026-06-21T09:37:52.2247089Z             {
2026-06-21T09:37:52.2247198Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2247293Z               "line": 534
2026-06-21T09:37:52.2247370Z             },
2026-06-21T09:37:52.2247527Z             {
2026-06-21T09:37:52.2247647Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2247742Z               "line": 548
2026-06-21T09:37:52.2247822Z             },
2026-06-21T09:37:52.2247908Z             {
2026-06-21T09:37:52.2248032Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2248118Z               "line": 603
2026-06-21T09:37:52.2248203Z             },
2026-06-21T09:37:52.2248271Z             {
2026-06-21T09:37:52.2248385Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2248471Z               "line": 634
2026-06-21T09:37:52.2248552Z             },
2026-06-21T09:37:52.2248634Z             {
2026-06-21T09:37:52.2248752Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T09:37:52.2248847Z               "line": 137
2026-06-21T09:37:52.2248925Z             },
2026-06-21T09:37:52.2249071Z             {
2026-06-21T09:37:52.2249194Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T09:37:52.2249285Z               "line": 184
2026-06-21T09:37:52.2249379Z             },
2026-06-21T09:37:52.2249459Z             {
2026-06-21T09:37:52.2249583Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2249660Z               "line": 78
2026-06-21T09:37:52.2249750Z             },
2026-06-21T09:37:52.2249835Z             {
2026-06-21T09:37:52.2249956Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2250036Z               "line": 114
2026-06-21T09:37:52.2250112Z             },
2026-06-21T09:37:52.2250189Z             {
2026-06-21T09:37:52.2250294Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2250384Z               "line": 185
2026-06-21T09:37:52.2250465Z             },
2026-06-21T09:37:52.2250552Z             {
2026-06-21T09:37:52.2250666Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2250751Z               "line": 260
2026-06-21T09:37:52.2250838Z             },
2026-06-21T09:37:52.2250919Z             {
2026-06-21T09:37:52.2251037Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2251118Z               "line": 292
2026-06-21T09:37:52.2251205Z             },
2026-06-21T09:37:52.2251285Z             {
2026-06-21T09:37:52.2251395Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2251477Z               "line": 323
2026-06-21T09:37:52.2251558Z             },
2026-06-21T09:37:52.2251642Z             {
2026-06-21T09:37:52.2251758Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2251835Z               "line": 346
2026-06-21T09:37:52.2251915Z             },
2026-06-21T09:37:52.2251995Z             {
2026-06-21T09:37:52.2252114Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2252200Z               "line": 388
2026-06-21T09:37:52.2252274Z             },
2026-06-21T09:37:52.2252364Z             {
2026-06-21T09:37:52.2252474Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2252566Z               "line": 398
2026-06-21T09:37:52.2252650Z             },
2026-06-21T09:37:52.2252736Z             {
2026-06-21T09:37:52.2252846Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2252932Z               "line": 410
2026-06-21T09:37:52.2253133Z             },
2026-06-21T09:37:52.2253214Z             {
2026-06-21T09:37:52.2253327Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2253409Z               "line": 420
2026-06-21T09:37:52.2253495Z             },
2026-06-21T09:37:52.2253576Z             {
2026-06-21T09:37:52.2253695Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2253777Z               "line": 439
2026-06-21T09:37:52.2253852Z             },
2026-06-21T09:37:52.2253933Z             {
2026-06-21T09:37:52.2254034Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2254115Z               "line": 449
2026-06-21T09:37:52.2254301Z             },
2026-06-21T09:37:52.2254378Z             {
2026-06-21T09:37:52.2254491Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2254576Z               "line": 94
2026-06-21T09:37:52.2254662Z             },
2026-06-21T09:37:52.2254747Z             {
2026-06-21T09:37:52.2254860Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2254945Z               "line": 120
2026-06-21T09:37:52.2255032Z             },
2026-06-21T09:37:52.2255113Z             {
2026-06-21T09:37:52.2255217Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2255298Z               "line": 135
2026-06-21T09:37:52.2255385Z             },
2026-06-21T09:37:52.2255466Z             {
2026-06-21T09:37:52.2255574Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2255652Z               "line": 162
2026-06-21T09:37:52.2255737Z             },
2026-06-21T09:37:52.2255818Z             {
2026-06-21T09:37:52.2255923Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2256010Z               "line": 174
2026-06-21T09:37:52.2256099Z             },
2026-06-21T09:37:52.2256185Z             {
2026-06-21T09:37:52.2256296Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2256400Z               "line": 185
2026-06-21T09:37:52.2256476Z             },
2026-06-21T09:37:52.2256567Z             {
2026-06-21T09:37:52.2256681Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2256772Z               "line": 451
2026-06-21T09:37:52.2256862Z             },
2026-06-21T09:37:52.2256935Z             {
2026-06-21T09:37:52.2257052Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2257134Z               "line": 573
2026-06-21T09:37:52.2257221Z             },
2026-06-21T09:37:52.2257302Z             {
2026-06-21T09:37:52.2257410Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2257514Z               "line": 171
2026-06-21T09:37:52.2257587Z             },
2026-06-21T09:37:52.2257673Z             {
2026-06-21T09:37:52.2257786Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.2257872Z               "line": 65
2026-06-21T09:37:52.2257944Z             },
2026-06-21T09:37:52.2258025Z             {
2026-06-21T09:37:52.2258143Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.2258221Z               "line": 71
2026-06-21T09:37:52.2258302Z             },
2026-06-21T09:37:52.2258378Z             {
2026-06-21T09:37:52.2258483Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T09:37:52.2258564Z               "line": 77
2026-06-21T09:37:52.2258650Z             },
2026-06-21T09:37:52.2258730Z             {
2026-06-21T09:37:52.2258831Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2258922Z               "line": 778
2026-06-21T09:37:52.2259060Z             },
2026-06-21T09:37:52.2259141Z             {
2026-06-21T09:37:52.2259251Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2259355Z               "line": 795
2026-06-21T09:37:52.2259456Z             },
2026-06-21T09:37:52.2259542Z             {
2026-06-21T09:37:52.2259646Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2259726Z               "line": 838
2026-06-21T09:37:52.2259911Z             },
2026-06-21T09:37:52.2259986Z             {
2026-06-21T09:37:52.2260090Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2260182Z               "line": 981
2026-06-21T09:37:52.2260263Z             },
2026-06-21T09:37:52.2260352Z             {
2026-06-21T09:37:52.2260449Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2260544Z               "line": 1131
2026-06-21T09:37:52.2260630Z             }
2026-06-21T09:37:52.2260710Z           ]
2026-06-21T09:37:52.2260788Z         },
2026-06-21T09:37:52.2260859Z         "int": {
2026-06-21T09:37:52.2260954Z           "complete": true,
2026-06-21T09:37:52.2261126Z           "evidence": [
2026-06-21T09:37:52.2261211Z             {
2026-06-21T09:37:52.2261335Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:37:52.2261427Z               "line": 569
2026-06-21T09:37:52.2261512Z             },
2026-06-21T09:37:52.2261593Z             {
2026-06-21T09:37:52.2261718Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T09:37:52.2261794Z               "line": 135
2026-06-21T09:37:52.2261878Z             }
2026-06-21T09:37:52.2261959Z           ]
2026-06-21T09:37:52.2262038Z         },
2026-06-21T09:37:52.2262114Z         "unit": {
2026-06-21T09:37:52.2262202Z           "complete": true,
2026-06-21T09:37:52.2262294Z           "evidence": [
2026-06-21T09:37:52.2262367Z             {
2026-06-21T09:37:52.2262489Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2262574Z               "line": 626
2026-06-21T09:37:52.2262655Z             },
2026-06-21T09:37:52.2262736Z             {
2026-06-21T09:37:52.2262858Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2262948Z               "line": 675
2026-06-21T09:37:52.2263034Z             },
2026-06-21T09:37:52.2263111Z             {
2026-06-21T09:37:52.2263224Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T09:37:52.2263316Z               "line": 696
2026-06-21T09:37:52.2263397Z             },
2026-06-21T09:37:52.2263478Z             {
2026-06-21T09:37:52.2263597Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2263674Z               "line": 513
2026-06-21T09:37:52.2263764Z             },
2026-06-21T09:37:52.2263849Z             {
2026-06-21T09:37:52.2263955Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2264041Z               "line": 638
2026-06-21T09:37:52.2266836Z             },
2026-06-21T09:37:52.2266955Z             {
2026-06-21T09:37:52.2267089Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2267195Z               "line": 675
2026-06-21T09:37:52.2267284Z             },
2026-06-21T09:37:52.2267365Z             {
2026-06-21T09:37:52.2267490Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2267571Z               "line": 947
2026-06-21T09:37:52.2267656Z             },
2026-06-21T09:37:52.2267737Z             {
2026-06-21T09:37:52.2267862Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2267960Z               "line": 969
2026-06-21T09:37:52.2268041Z             },
2026-06-21T09:37:52.2268127Z             {
2026-06-21T09:37:52.2268233Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2268327Z               "line": 986
2026-06-21T09:37:52.2268408Z             },
2026-06-21T09:37:52.2268495Z             {
2026-06-21T09:37:52.2268613Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2268694Z               "line": 1001
2026-06-21T09:37:52.2268772Z             },
2026-06-21T09:37:52.2268857Z             {
2026-06-21T09:37:52.2269043Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2269125Z               "line": 1027
2026-06-21T09:37:52.2269214Z             },
2026-06-21T09:37:52.2269309Z             {
2026-06-21T09:37:52.2269440Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T09:37:52.2269667Z               "line": 457
2026-06-21T09:37:52.2269750Z             },
2026-06-21T09:37:52.2269834Z             {
2026-06-21T09:37:52.2269963Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T09:37:52.2270045Z               "line": 338
2026-06-21T09:37:52.2270130Z             },
2026-06-21T09:37:52.2270211Z             {
2026-06-21T09:37:52.2270314Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2270405Z               "line": 10549
2026-06-21T09:37:52.2270480Z             },
2026-06-21T09:37:52.2270565Z             {
2026-06-21T09:37:52.2270665Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2270851Z               "line": 1260
2026-06-21T09:37:52.2270936Z             },
2026-06-21T09:37:52.2271019Z             {
2026-06-21T09:37:52.2271128Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T09:37:52.2271214Z               "line": 130
2026-06-21T09:37:52.2271295Z             }
2026-06-21T09:37:52.2271376Z           ]
2026-06-21T09:37:52.2271467Z         }
2026-06-21T09:37:52.2271547Z       }
2026-06-21T09:37:52.2271629Z     },
2026-06-21T09:37:52.2271710Z     {
2026-06-21T09:37:52.2271805Z       "id": "REQ-UPD-7",
2026-06-21T09:37:52.2273910Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T09:37:52.2274020Z       "requiredStages": [
2026-06-21T09:37:52.2274104Z         "impl",
2026-06-21T09:37:52.2274191Z         "unit"
2026-06-21T09:37:52.2274272Z       ],
2026-06-21T09:37:52.2274358Z       "stages": {
2026-06-21T09:37:52.2274438Z         "doc": {
2026-06-21T09:37:52.2274525Z           "complete": false,
2026-06-21T09:37:52.2274601Z           "evidence": []
2026-06-21T09:37:52.2274687Z         },
2026-06-21T09:37:52.2274772Z         "impl": {
2026-06-21T09:37:52.2274859Z           "complete": true,
2026-06-21T09:37:52.2274954Z           "evidence": [
2026-06-21T09:37:52.2275035Z             {
2026-06-21T09:37:52.2275140Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2275221Z               "line": 2626
2026-06-21T09:37:52.2275301Z             }
2026-06-21T09:37:52.2275392Z           ]
2026-06-21T09:37:52.2275470Z         },
2026-06-21T09:37:52.2275550Z         "int": {
2026-06-21T09:37:52.2275630Z           "complete": false,
2026-06-21T09:37:52.2275725Z           "evidence": []
2026-06-21T09:37:52.2275792Z         },
2026-06-21T09:37:52.2275877Z         "unit": {
2026-06-21T09:37:52.2275970Z           "complete": true,
2026-06-21T09:37:52.2276056Z           "evidence": [
2026-06-21T09:37:52.2276142Z             {
2026-06-21T09:37:52.2276244Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2276332Z               "line": 10525
2026-06-21T09:37:52.2276414Z             }
2026-06-21T09:37:52.2276501Z           ]
2026-06-21T09:37:52.2276591Z         }
2026-06-21T09:37:52.2276671Z       }
2026-06-21T09:37:52.2276758Z     },
2026-06-21T09:37:52.2276839Z     {
2026-06-21T09:37:52.2276934Z       "id": "REQ-UPD-8",
2026-06-21T09:37:52.2279502Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T09:37:52.2279718Z       "requiredStages": [
2026-06-21T09:37:52.2279803Z         "impl",
2026-06-21T09:37:52.2279884Z         "unit"
2026-06-21T09:37:52.2279971Z       ],
2026-06-21T09:37:52.2280056Z       "stages": {
2026-06-21T09:37:52.2280232Z         "doc": {
2026-06-21T09:37:52.2280319Z           "complete": false,
2026-06-21T09:37:52.2280404Z           "evidence": []
2026-06-21T09:37:52.2280489Z         },
2026-06-21T09:37:52.2280566Z         "impl": {
2026-06-21T09:37:52.2280653Z           "complete": true,
2026-06-21T09:37:52.2280742Z           "evidence": [
2026-06-21T09:37:52.2280822Z             {
2026-06-21T09:37:52.2280951Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2281031Z               "line": 77
2026-06-21T09:37:52.2281116Z             },
2026-06-21T09:37:52.2281191Z             {
2026-06-21T09:37:52.2281307Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2281397Z               "line": 49
2026-06-21T09:37:52.2281478Z             },
2026-06-21T09:37:52.2281559Z             {
2026-06-21T09:37:52.2281669Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2281750Z               "line": 152
2026-06-21T09:37:52.2281816Z             },
2026-06-21T09:37:52.2281908Z             {
2026-06-21T09:37:52.2282017Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2282103Z               "line": 215
2026-06-21T09:37:52.2282179Z             },
2026-06-21T09:37:52.2282246Z             {
2026-06-21T09:37:52.2282360Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2282441Z               "line": 230
2026-06-21T09:37:52.2282523Z             },
2026-06-21T09:37:52.2282599Z             {
2026-06-21T09:37:52.2282713Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2282799Z               "line": 247
2026-06-21T09:37:52.2282876Z             },
2026-06-21T09:37:52.2282966Z             {
2026-06-21T09:37:52.2283085Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2283172Z               "line": 269
2026-06-21T09:37:52.2283248Z             },
2026-06-21T09:37:52.2283328Z             {
2026-06-21T09:37:52.2283444Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2283534Z               "line": 66
2026-06-21T09:37:52.2283619Z             },
2026-06-21T09:37:52.2283694Z             {
2026-06-21T09:37:52.2283809Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2283903Z               "line": 154
2026-06-21T09:37:52.2283983Z             },
2026-06-21T09:37:52.2284068Z             {
2026-06-21T09:37:52.2284159Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2284251Z               "line": 2430
2026-06-21T09:37:52.2284331Z             },
2026-06-21T09:37:52.2284402Z             {
2026-06-21T09:37:52.2284508Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2284589Z               "line": 2493
2026-06-21T09:37:52.2284678Z             },
2026-06-21T09:37:52.2284746Z             {
2026-06-21T09:37:52.2284851Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2284937Z               "line": 2503
2026-06-21T09:37:52.2285017Z             },
2026-06-21T09:37:52.2285109Z             {
2026-06-21T09:37:52.2285199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2285294Z               "line": 2510
2026-06-21T09:37:52.2285366Z             },
2026-06-21T09:37:52.2285452Z             {
2026-06-21T09:37:52.2285556Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2285743Z               "line": 2627
2026-06-21T09:37:52.2285819Z             },
2026-06-21T09:37:52.2285899Z             {
2026-06-21T09:37:52.2286010Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2286096Z               "line": 480
2026-06-21T09:37:52.2286181Z             },
2026-06-21T09:37:52.2286275Z             {
2026-06-21T09:37:52.2286376Z               "path": "crates/xtask/src/main.rs",
2026-06-21T09:37:52.2286465Z               "line": 494
2026-06-21T09:37:52.2286545Z             }
2026-06-21T09:37:52.2286635Z           ]
2026-06-21T09:37:52.2286716Z         },
2026-06-21T09:37:52.2286804Z         "int": {
2026-06-21T09:37:52.2286897Z           "complete": false,
2026-06-21T09:37:52.2287056Z           "evidence": []
2026-06-21T09:37:52.2287147Z         },
2026-06-21T09:37:52.2287221Z         "unit": {
2026-06-21T09:37:52.2287313Z           "complete": true,
2026-06-21T09:37:52.2287404Z           "evidence": [
2026-06-21T09:37:52.2287480Z             {
2026-06-21T09:37:52.2287613Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T09:37:52.2287695Z               "line": 476
2026-06-21T09:37:52.2287779Z             },
2026-06-21T09:37:52.2287856Z             {
2026-06-21T09:37:52.2287976Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T09:37:52.2288062Z               "line": 580
2026-06-21T09:37:52.2288138Z             },
2026-06-21T09:37:52.2288223Z             {
2026-06-21T09:37:52.2288320Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2288404Z               "line": 10527
2026-06-21T09:37:52.2288481Z             },
2026-06-21T09:37:52.2288567Z             {
2026-06-21T09:37:52.2288673Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2288756Z               "line": 10549
2026-06-21T09:37:52.2288853Z             }
2026-06-21T09:37:52.2288921Z           ]
2026-06-21T09:37:52.2289104Z         }
2026-06-21T09:37:52.2289180Z       }
2026-06-21T09:37:52.2289262Z     },
2026-06-21T09:37:52.2289363Z     {
2026-06-21T09:37:52.2289452Z       "id": "REQ-UPD-9",
2026-06-21T09:37:52.2292005Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T09:37:52.2292110Z       "requiredStages": [
2026-06-21T09:37:52.2292201Z         "doc",
2026-06-21T09:37:52.2292286Z         "impl",
2026-06-21T09:37:52.2292367Z         "unit"
2026-06-21T09:37:52.2292444Z       ],
2026-06-21T09:37:52.2292516Z       "stages": {
2026-06-21T09:37:52.2292610Z         "doc": {
2026-06-21T09:37:52.2292700Z           "complete": true,
2026-06-21T09:37:52.2292778Z           "evidence": [
2026-06-21T09:37:52.2292854Z             {
2026-06-21T09:37:52.2292949Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.2293039Z               "line": 93
2026-06-21T09:37:52.2293117Z             },
2026-06-21T09:37:52.2293192Z             {
2026-06-21T09:37:52.2293287Z               "path": "docs/MANIFEST.md",
2026-06-21T09:37:52.2293379Z               "line": 285
2026-06-21T09:37:52.2293455Z             }
2026-06-21T09:37:52.2293531Z           ]
2026-06-21T09:37:52.2293612Z         },
2026-06-21T09:37:52.2293689Z         "impl": {
2026-06-21T09:37:52.2293784Z           "complete": true,
2026-06-21T09:37:52.2293869Z           "evidence": [
2026-06-21T09:37:52.2294047Z             {
2026-06-21T09:37:52.2294183Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2294268Z               "line": 128
2026-06-21T09:37:52.2294345Z             },
2026-06-21T09:37:52.2294421Z             {
2026-06-21T09:37:52.2294534Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2294623Z               "line": 533
2026-06-21T09:37:52.2294696Z             },
2026-06-21T09:37:52.2294782Z             {
2026-06-21T09:37:52.2294891Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2294982Z               "line": 459
2026-06-21T09:37:52.2295158Z             },
2026-06-21T09:37:52.2295239Z             {
2026-06-21T09:37:52.2295359Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2295449Z               "line": 505
2026-06-21T09:37:52.2295535Z             },
2026-06-21T09:37:52.2295612Z             {
2026-06-21T09:37:52.2295731Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2295812Z               "line": 928
2026-06-21T09:37:52.2295887Z             },
2026-06-21T09:37:52.2295975Z             {
2026-06-21T09:37:52.2296088Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T09:37:52.2296179Z               "line": 302
2026-06-21T09:37:52.2296251Z             },
2026-06-21T09:37:52.2296337Z             {
2026-06-21T09:37:52.2296441Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2296536Z               "line": 5675
2026-06-21T09:37:52.2296624Z             },
2026-06-21T09:37:52.2296704Z             {
2026-06-21T09:37:52.2296807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2296902Z               "line": 5720
2026-06-21T09:37:52.2296983Z             },
2026-06-21T09:37:52.2297067Z             {
2026-06-21T09:37:52.2297171Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2297263Z               "line": 5857
2026-06-21T09:37:52.2297344Z             },
2026-06-21T09:37:52.2297429Z             {
2026-06-21T09:37:52.2297524Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2297611Z               "line": 5878
2026-06-21T09:37:52.2297702Z             },
2026-06-21T09:37:52.2297782Z             {
2026-06-21T09:37:52.2297883Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2297964Z               "line": 5901
2026-06-21T09:37:52.2298054Z             },
2026-06-21T09:37:52.2298134Z             {
2026-06-21T09:37:52.2298226Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2298312Z               "line": 5928
2026-06-21T09:37:52.2298388Z             }
2026-06-21T09:37:52.2298478Z           ]
2026-06-21T09:37:52.2298560Z         },
2026-06-21T09:37:52.2298641Z         "int": {
2026-06-21T09:37:52.2298731Z           "complete": false,
2026-06-21T09:37:52.2298822Z           "evidence": []
2026-06-21T09:37:52.2298908Z         },
2026-06-21T09:37:52.2299051Z         "unit": {
2026-06-21T09:37:52.2299137Z           "complete": true,
2026-06-21T09:37:52.2299228Z           "evidence": [
2026-06-21T09:37:52.2299317Z             {
2026-06-21T09:37:52.2299481Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T09:37:52.2299571Z               "line": 259
2026-06-21T09:37:52.2299655Z             },
2026-06-21T09:37:52.2299731Z             {
2026-06-21T09:37:52.2299851Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T09:37:52.2299937Z               "line": 657
2026-06-21T09:37:52.2300017Z             },
2026-06-21T09:37:52.2300088Z             {
2026-06-21T09:37:52.2300213Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T09:37:52.2300308Z               "line": 1107
2026-06-21T09:37:52.2300394Z             },
2026-06-21T09:37:52.2300476Z             {
2026-06-21T09:37:52.2300576Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2300656Z               "line": 7565
2026-06-21T09:37:52.2300728Z             }
2026-06-21T09:37:52.2300815Z           ]
2026-06-21T09:37:52.2301004Z         }
2026-06-21T09:37:52.2301086Z       }
2026-06-21T09:37:52.2301177Z     },
2026-06-21T09:37:52.2301253Z     {
2026-06-21T09:37:52.2301348Z       "id": "REQ-WHOAMI-1",
2026-06-21T09:37:52.2302975Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T09:37:52.2303166Z       "requiredStages": [
2026-06-21T09:37:52.2303261Z         "doc",
2026-06-21T09:37:52.2303338Z         "impl",
2026-06-21T09:37:52.2303419Z         "unit"
2026-06-21T09:37:52.2303504Z       ],
2026-06-21T09:37:52.2303585Z       "stages": {
2026-06-21T09:37:52.2303672Z         "doc": {
2026-06-21T09:37:52.2303766Z           "complete": true,
2026-06-21T09:37:52.2303852Z           "evidence": [
2026-06-21T09:37:52.2303929Z             {
2026-06-21T09:37:52.2304030Z               "path": "CONTEXT.md",
2026-06-21T09:37:52.2304124Z               "line": 707
2026-06-21T09:37:52.2304191Z             }
2026-06-21T09:37:52.2304273Z           ]
2026-06-21T09:37:52.2304345Z         },
2026-06-21T09:37:52.2304429Z         "impl": {
2026-06-21T09:37:52.2304515Z           "complete": true,
2026-06-21T09:37:52.2304602Z           "evidence": [
2026-06-21T09:37:52.2304688Z             {
2026-06-21T09:37:52.2304781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2304876Z               "line": 3190
2026-06-21T09:37:52.2304953Z             },
2026-06-21T09:37:52.2305033Z             {
2026-06-21T09:37:52.2305122Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2305213Z               "line": 3218
2026-06-21T09:37:52.2305309Z             }
2026-06-21T09:37:52.2305380Z           ]
2026-06-21T09:37:52.2305461Z         },
2026-06-21T09:37:52.2305542Z         "int": {
2026-06-21T09:37:52.2305638Z           "complete": false,
2026-06-21T09:37:52.2305718Z           "evidence": []
2026-06-21T09:37:52.2305804Z         },
2026-06-21T09:37:52.2305886Z         "unit": {
2026-06-21T09:37:52.2305976Z           "complete": true,
2026-06-21T09:37:52.2306066Z           "evidence": [
2026-06-21T09:37:52.2306147Z             {
2026-06-21T09:37:52.2306244Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2306329Z               "line": 7847
2026-06-21T09:37:52.2306414Z             },
2026-06-21T09:37:52.2306496Z             {
2026-06-21T09:37:52.2306596Z               "path": "crates/spt/src/cli.rs",
2026-06-21T09:37:52.2306686Z               "line": 7900
2026-06-21T09:37:52.2306763Z             }
2026-06-21T09:37:52.2306845Z           ]
2026-06-21T09:37:52.2306921Z         }
2026-06-21T09:37:52.2307005Z       }
2026-06-21T09:37:52.2307096Z     }
2026-06-21T09:37:52.2307174Z   ],
2026-06-21T09:37:52.2307268Z   "findings": []
2026-06-21T09:37:52.2307353Z }
